@@ -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 ¯ostr = *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