首页 > 学院 > 开发设计 > 正文

gcc支持在#pragma语句中使用宏替换吗

2019-11-17 05:14:48
字体:
来源:转载
供稿:网友

  问题:
gcc编译器似乎对宏编译指令不支持宏替换,比如:
#define PACK1 pack(1)
#PRagma PACK1


回答:
gcc 不支持#pragma行上的宏替换,参见:

info gcc
5.25 Declaring Attributes of Functions
...
Some people object to the `__attribute__' feature, suggesting that
ISO C's `#pragma' should be used instead. At the time `__attribute__'
was designed, there were two reasons for not doing this.

1. It is impossible to generate `#pragma' commands from a macro.

2. There is no telling what the same `#pragma' might mean in another
compiler.

...

如此说来,使用#pragma在不同的编译器之间很难保证兼容性,
假如非要用的话,至少在gcc下是不能同时使用宏替换的。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表