gpt4 book ai didi

c++ - 是否可以定义另一个预处理器指令?

转载 作者:IT老高 更新时间:2023-10-28 21:49:02 26 4
gpt4 key购买 nike

我一直在看code golf并想出了尝试这段代码的想法:

#define D #define 添加此行后,一切正常,但是我将其扩展为:

#define D #define
D VALUE

在这里我得到了 5 个编译错误。如果我将 D 更改为 #define 一切都很好,谁能解释一下,为什么这段代码是非法的?

注意:我使用的是 VS2008 编译器。

编辑:经过一些回答,我发现我需要提供编译错误列表:

  1. 错误 C2121:“#”:无效字符:可能是宏扩展的结果
  2. 错误 C2146:语法错误:缺少 ';'在标识符“VALUE”之前
  3. 错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int
  4. error C2144: 语法错误:'void' 前面应该有 ';'
  5. 错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int

第一个错误表明D不仅仅是define,还包括#

最佳答案

C 2011 (N1570) 6.10.3.4 3:“生成的完全用宏替换的预处理 token 序列不会作为预处理指令处理,即使它类似于一个……”

C++ 2010 (N3092) 16.3.4 [cpp.rescan] 3 具有完全相同的文本。

关于c++ - 是否可以定义另一个预处理器指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18474622/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com