宏和多行注释
Macros and multi-line comments
本文关键字:多行注释 更新时间:2023-10-16
我需要在一组宏中有多行注释,以便其中一个宏启动注释块,另一个宏结束注释块,如下所示:
#define C_BEGIN /*
#define C_END */
... other macros
但可以肯定的是,这种方法是行不通的。
由于以下原因,您不能这样做。让我们假设是可能的。
因此,您创建了一个宏,它将自己替换为/*
,并将另一个替换为*/
。然后会发生什么?首先,将注释从代码中删除。然后,预处理器用注释替换宏。在那之后,编译器会窒息:它不知道该如何处理/*
和*/
,因为它根本不会面对这样的事情:注释在编译前总是被删除,所以它甚至不知道什么是"注释"。它可能会认为这是一个除法后乘。
所以我们的假设是错误的,你不能这么做。
注释处理发生在宏扩展之前:
c++11
2.2翻译阶段[法律阶段]
1-翻译的语法规则中的优先顺序由以下阶段规定。[…]
3.[…]每个注释都替换为一个空格字符。[…]
4.执行预处理指令,扩展宏调用〔…〕
也许您可以尝试预处理源文件两次?(注意:不要这样做。)
但可以肯定的是,这种方法是行不通的。
它不起作用。#define C_BEGIN
中的注释不是,也不能是宏定义的一部分。就语言而言,#define C_END
不是一个宏定义。它只是多行注释的一部分。换句话说,它是空白。在预处理器/编译器进入解释宏定义的阶段之前,注释会被处理(变成空白)。
如果您使用的是IDE,您只需在Windows上按ctrl或在Mac上按命令>。您应该先选择要注释的行。
相关文章:
- VSCode 中带有 C/C++ 扩展名的多行注释缩进错误
- 如何设置叮当格式的注释编译指示,以免触及多行doxygen注释?
- 如何阻止 ReSharper 在 C++ 中格式化多行注释
- C++,在多行代码段中注释
- QSyntax荧光笔和多行注释
- gcc多行注释警告
- 使用正则表达式匹配多行C++样式注释
- visualstudio继续多行注释
- 宏和多行注释
- 变量后的Doxygen多行注释
- VIM语法折叠:禁用折叠多行注释
- 使用RegEx剥离C++中的多行注释
- 用c++计算多行注释之间的所有行数
- 如何在氧代码示例中插入多行注释
- c++单行注释后面跟着多行注释中的变换
- 为什么在c++中注释多行注释不一致?
- 使用反斜杠的多行注释
- 多行注释和新行
- c++正则表达式搜索多行注释(在/* */之间)
- 使用flex/bison进行多行注释声明