aboutsummaryrefslogtreecommitdiff
path: root/tccpp.c
diff options
context:
space:
mode:
authorseyko <seyko2@gmail.com>2015-04-21 15:46:29 +0300
committerseyko <seyko2@gmail.com>2015-04-21 15:46:29 +0300
commitb08ce880822875d4bef103719179501d6ba38730 (patch)
tree7a5a70341c168eb93ee92afbe6d9b81d2516118d /tccpp.c
parent0c8447db7970813292a8be74ee50e49091be5d15 (diff)
downloadtinycc-b08ce880822875d4bef103719179501d6ba38730.tar.gz
tinycc-b08ce880822875d4bef103719179501d6ba38730.tar.bz2
"#pragma once" implementation
Diffstat (limited to 'tccpp.c')
-rw-r--r--tccpp.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/tccpp.c b/tccpp.c
index 4d9430d..b26dbee 100644
--- a/tccpp.c
+++ b/tccpp.c
@@ -1478,6 +1478,8 @@ static void pragma_parse(TCCState *s1)
}
next();
skip(')');
+ } else if (tok == TOK_once) {
+ add_cached_include(s1, file->filename, TOK_once);
} else {
tcc_warning("unknown #pragma %s", get_tok_str(tok, &tokc));
}
@@ -1618,7 +1620,7 @@ ST_FUNC void preprocess(int is_bof)
}
e = search_cached_include(s1, buf1);
- if (e && define_find(e->ifndef_macro)) {
+ if (e && (define_find(e->ifndef_macro) || e->ifndef_macro == TOK_once)) {
/* no need to parse the include because the 'ifndef macro'
is defined */
#ifdef INC_DEBUG