可以(或可以)通过将名称括在括号中来抑制C中的宏替换
我似乎回想起来,可以通过将宏名称放在括号中来抑制C中的宏替换(扩展). (free)(p)将自动调用该函数,无论是否定义了宏自由.我在C99标准中没有提到这一点(它在那里,见答案),我观察到MSVS 2013也没有实现.根据答案补充说:它符合标准要求,即只适用于类似功能的宏,其扩展由以下'(‘所触发,因此被介入’)被触发.
我在做梦,还是有这样的可能性,如果是这样,撤回的理由是什么?还是只在某些方言出现? 解决方法
一个类似功能的宏FOO
#define FOO(x) ... 只有当令牌FOO出现时,才会扩展,然后是(令牌),因此,为了防止扩展FOO,可以使用(FOO).正如你所说,这只适用于类似功能的宏. 这在ISO 9899:2011§6.10.3?10中有所规定,内容如下:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |