相关疑难解决方法(0)

宏连接中的有效预处理程序标记

我尝试使用串联预处理器操作符##来理解c中的宏,但我意识到我的令牌有问题.我认为这很容易,但实际上并非如此.

因此,串联用于连接两个令牌以创建新令牌.例如:连接()int*

我试过了

#define foo(x,y) x ## y
foo(x,y)
Run Code Online (Sandbox Code Playgroud)

每当我给它一些论据时,我总是会错误地说出来 pasting both argument does not give a valid preprocessor token.

例如,为什么连接foo(1,aa)结果1aa(哪种类型的令牌是它?以及它为什么有效)但foo(int,*)我得到了一个错误.

有没有办法知道哪些令牌是有效的,或者是否有可能有一些良好的联系,以了解如何在我的脑海中澄清它.(我已经谷歌搜索谷歌和SO)

我错过了什么?

我会很感激.

c macros gcc c-preprocessor

9
推荐指数
1
解决办法
1350
查看次数

标签 统计

c ×1

c-preprocessor ×1

gcc ×1

macros ×1