@@ -3482,11 +3482,14 @@ void simplecpp::preprocess(simplecpp::TokenList &output, const simplecpp::TokenL
34823482
34833483 const bool hasInclude = isCpp17OrLater (dui) || isGnu (dui);
34843484 MacroMap macros;
3485+ bool strictAnsiDefined = false ;
34853486 for (std::list<std::string>::const_iterator it = dui.defines .begin (); it != dui.defines .end (); ++it) {
34863487 const std::string ¯ostr = *it;
34873488 const std::string::size_type eq = macrostr.find (' =' );
34883489 const std::string::size_type par = macrostr.find (' (' );
34893490 const std::string macroname = macrostr.substr (0 , std::min (eq,par));
3491+ if (macroname == " __STRICT_ANSI__" )
3492+ strictAnsiDefined = true ;
34903493 if (dui.undefined .find (macroname) != dui.undefined .end ())
34913494 continue ;
34923495 const std::string lhs (macrostr.substr (0 ,eq));
@@ -3495,6 +3498,10 @@ void simplecpp::preprocess(simplecpp::TokenList &output, const simplecpp::TokenL
34953498 macros.insert (std::pair<TokenString,Macro>(macro.name (), macro));
34963499 }
34973500
3501+ const bool strictAnsiUndefined = dui.undefined .find (" __STRICT_ANSI__" ) != dui.undefined .cend ();
3502+ if (!isGnu (dui) && !strictAnsiDefined && !strictAnsiUndefined)
3503+ macros.insert (std::pair<TokenString, Macro>(" __STRICT_ANSI__" , Macro (" __STRICT_ANSI__" , " 1" , dummy)));
3504+
34983505 macros.insert (std::make_pair (" __FILE__" , Macro (" __FILE__" , " __FILE__" , dummy)));
34993506 macros.insert (std::make_pair (" __LINE__" , Macro (" __LINE__" , " __LINE__" , dummy)));
35003507 macros.insert (std::make_pair (" __COUNTER__" , Macro (" __COUNTER__" , " __COUNTER__" , dummy)));
0 commit comments