Skip to content

Commit 7dde25f

Browse files
committed
1 parent ee3966f commit 7dde25f

1 file changed

Lines changed: 7 additions & 0 deletions

File tree

simplecpp.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3480,11 +3480,14 @@ void simplecpp::preprocess(simplecpp::TokenList &output, const simplecpp::TokenL
34803480

34813481
const bool hasInclude = isCpp17OrLater(dui) || isGnu(dui);
34823482
MacroMap macros;
3483+
bool strictAnsiDefined = false;
34833484
for (std::list<std::string>::const_iterator it = dui.defines.begin(); it != dui.defines.end(); ++it) {
34843485
const std::string &macrostr = *it;
34853486
const std::string::size_type eq = macrostr.find('=');
34863487
const std::string::size_type par = macrostr.find('(');
34873488
const std::string macroname = macrostr.substr(0, std::min(eq,par));
3489+
if (macroname == "__STRICT_ANSI__")
3490+
strictAnsiDefined = true;
34883491
if (dui.undefined.find(macroname) != dui.undefined.end())
34893492
continue;
34903493
const std::string lhs(macrostr.substr(0,eq));
@@ -3493,6 +3496,10 @@ void simplecpp::preprocess(simplecpp::TokenList &output, const simplecpp::TokenL
34933496
macros.insert(std::pair<TokenString,Macro>(macro.name(), macro));
34943497
}
34953498

3499+
const bool strictAnsiUndefined = dui.undefined.find("__STRICT_ANSI__") != dui.undefined.cend();
3500+
if (!isGnu(dui) && !strictAnsiDefined && !strictAnsiUndefined)
3501+
macros.insert(std::pair<TokenString, Macro>("__STRICT_ANSI__", Macro("__STRICT_ANSI__", "1", dummy)));
3502+
34963503
macros.insert(std::make_pair("__FILE__", Macro("__FILE__", "__FILE__", dummy)));
34973504
macros.insert(std::make_pair("__LINE__", Macro("__LINE__", "__LINE__", dummy)));
34983505
macros.insert(std::make_pair("__COUNTER__", Macro("__COUNTER__", "__COUNTER__", dummy)));

0 commit comments

Comments
 (0)