gcc 预处理器与 MS VS cl 预处理器之间的另一个区别。考虑以下代码段:
# define A(x) L ## x
# define B A("b")
# define C(x) x
C(A("a" B))
对于“gcc -E”,我们得到以下信息:
L"a" A("b")
对于 'cl /E',输出不同:
L"a" L"b"
MS 预处理器以某种方式执行额外的宏扩展。它的工作算法显然与gcc不同,但这个算法似乎也是一个秘密。有谁知道如何解释观察到的差异以及 MS cl 中的预处理方案是什么?