忽略或重新定义GCC标准预定义宏

use*_*597 6 c flags gcc compilation c-preprocessor

是否可以告诉GCC编译源代码,而忽略了像宏__FILE__,__LINE__等,等,或重新定义它们扩展到让我们说-一个空字符串?

oua*_*uah 5

与任何宏一样,您可以使用:

#undef __LINE__
#undef __FILE__
Run Code Online (Sandbox Code Playgroud)

然后你可以重新定义它们.

您还可以传递-U macroname给undef一个宏名称并-D macroname=definitiongcc选项定义宏名称.

请注意,如另一个答案所示,取消定义或重新定义__LINE____FILE__在C中调用未定义的行为.

  • 我怀疑这样做会激怒UB.请看我的答案. (2认同)
  • @alk违反了一个非C约束的要求调用UB,参见C99,4.p2 (2认同)