C宏中的参数名称是否可以具有先前定义的副作用?

塞斯

我知道在C宏中使用参数时会进行参数预扫描,但是当您使用已经定义的宏时就会发生这种情况。但是,在定义它时,在选择参数名称时是否需要特别注意?预处理程序是否以“原子”方式解析宏,以便不扩展参数名称?

我的意思是,想象一下这种情况:

#define MYVAL {is this safe?}
#define ADDVALUES(MYVAL,YOURVAL) do{(MYVAL)+(YOURVAL);}while(0)

int val=ADDVALUES(1,3);

如何解析ADDVALUES宏在定义ADDVALUES宏之前,MYVAL是否已扩展?

我尚未阅读有关在宏中选择参数名称的任何警告,因此我倾向于认为在解析宏之前,它们的名称不会扩展(我已阅读有关在宏中命名局部变量,有关宏名称本身,有关吞咽的警告。分号等,但与选择参数名称无关。

内贾特·艾丁

参数的范围MYVAL不同于类对象宏的范围MAYVAL引用本标准相关部分6.10.3,p10

这些参数由可选的标识符列表指定,其范围从标识符列表中的声明扩展到终止#define预处理指令的换行符。

给定示例中的最后一行将扩展为

int val=do{(1)+(3);}while(0);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否可以从同名方法中调用先前定义的方法?

来自分类Dev

如何在C宏中附加到参数名称

来自分类Dev

是否可以在url中的操作之前定义参数

来自分类Dev

参数名称是否必须为模型?

来自分类Dev

自定义打印功能的可变参数宏,在C中具有参数扩展

来自分类Dev

C#方法:是否有一个参数名称可以通用地插入“派生类名称”?

来自分类Dev

在C ++函数中定义已经是参数名称的变量

来自分类Dev

是否可能具有多个具有多个值但参数名称相同的Kettle属性文件

来自分类Dev

是否有一个Visual Studio项目配置宏定义了DEBUG或RELEASE,而不管项目配置名称是什么?

来自分类Dev

C中的函数名称是什么类型?

来自分类Dev

在多个头文件中具有相同的函数名称是一种好习惯吗?

来自分类Dev

在C中的新#define中使用先前定义的#define

来自分类Dev

C中未定义行为的副作用是否已定义?

来自分类Dev

昂首阔步的参数名称是否可能包含变量?

来自分类Dev

参数和名称是否会影响Linux中的命令?

来自分类Dev

cond可以支持具有副作用的TF ops吗?

来自分类Dev

包含头文件后,先前定义的宏消失了

来自分类Dev

是否可以更改argparse参数名称的显示文本

来自分类Dev

是否可以将正式的参数名称/值作为字典?

来自分类Dev

xml模式中的类型名称是否有标准约定?

来自分类Dev

在不同控制器中具有不同参数名称的MVC路由

来自分类Dev

从具有函数名称和参数的列表中获取函数的字符串表示形式

来自分类Dev

在 Django 模型更新中具有可变参数名称的可能性

来自分类Dev

匹配python中先前定义的组

来自分类Dev

NameError:名称“ freshdatapoly”未定义-先前定义的变量?

来自分类Dev

c#是否具有类似于“子”名称空间的名称,或像Java中那样的程序包作用域?

来自分类Dev

是否有可能通过javascript中的函数名称获取参数

来自分类Dev

c具有多个可选参数的宏

来自分类Dev

具有特殊变量参数的C宏

Related 相关文章

  1. 1

    是否可以从同名方法中调用先前定义的方法?

  2. 2

    如何在C宏中附加到参数名称

  3. 3

    是否可以在url中的操作之前定义参数

  4. 4

    参数名称是否必须为模型?

  5. 5

    自定义打印功能的可变参数宏,在C中具有参数扩展

  6. 6

    C#方法:是否有一个参数名称可以通用地插入“派生类名称”?

  7. 7

    在C ++函数中定义已经是参数名称的变量

  8. 8

    是否可能具有多个具有多个值但参数名称相同的Kettle属性文件

  9. 9

    是否有一个Visual Studio项目配置宏定义了DEBUG或RELEASE,而不管项目配置名称是什么?

  10. 10

    C中的函数名称是什么类型?

  11. 11

    在多个头文件中具有相同的函数名称是一种好习惯吗?

  12. 12

    在C中的新#define中使用先前定义的#define

  13. 13

    C中未定义行为的副作用是否已定义?

  14. 14

    昂首阔步的参数名称是否可能包含变量?

  15. 15

    参数和名称是否会影响Linux中的命令?

  16. 16

    cond可以支持具有副作用的TF ops吗?

  17. 17

    包含头文件后,先前定义的宏消失了

  18. 18

    是否可以更改argparse参数名称的显示文本

  19. 19

    是否可以将正式的参数名称/值作为字典?

  20. 20

    xml模式中的类型名称是否有标准约定?

  21. 21

    在不同控制器中具有不同参数名称的MVC路由

  22. 22

    从具有函数名称和参数的列表中获取函数的字符串表示形式

  23. 23

    在 Django 模型更新中具有可变参数名称的可能性

  24. 24

    匹配python中先前定义的组

  25. 25

    NameError:名称“ freshdatapoly”未定义-先前定义的变量?

  26. 26

    c#是否具有类似于“子”名称空间的名称,或像Java中那样的程序包作用域?

  27. 27

    是否有可能通过javascript中的函数名称获取参数

  28. 28

    c具有多个可选参数的宏

  29. 29

    具有特殊变量参数的C宏

热门标签

归档