GCC使用-D参数定义类似函数的宏

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GCC使用-D参数定义类似函数的宏相关的知识,希望对你有一定的参考价值。

问题

我尝试从我的C代码中删除__attribute__,然后将其发送到解析器。有没有办法使用-D参数定义类似函数的宏?

解决方案使用头文件

#define __attribute__(x)

试图解决方案

gcc -E -D__attribute__(x)= testfile.c
gcc -E -D__attribute__(x) testfile.c
答案

从手册页

       If you wish to define a function-like macro on the command line,
       write its argument list with surrounding parentheses before the
       equals sign (if any).  Parentheses are meaningful to most shells,
       so you will need to quote the option.  With sh and csh,
       -D'name(args...)=definition' works.

所以这适用于Unix / Linux shell

gcc -D'__attribute__(x)='

在Windows CMD上,原始表达式有效,因为括号不是特殊的:

gcc -D__attribute__(x)=

以上是关于GCC使用-D参数定义类似函数的宏的主要内容,如果未能解决你的问题,请参考以下文章

12_关于flask中的宏

C语言宏定义实现可变参数

C语言带参数的宏定义:定义宏名时可以不写出参数???

高分求助VC中关于不定参数宏的使用

Flask模板宏的概念和基本使用

具有多行参数的宏功能?