是C预处理器的多通道操作
Is the C preprocessor multi-pass in operation?
我最近遇到了"多遍编译器"这个术语。从本质上讲,任何编译器都可以通过多次传递来解析源代码。
这让我思考,C预处理器是多通道操作吗?
假设我有下面的C代码。
int bar = foo;
#define foo 1
在传递过程中,唯一可行的方法是预处理器在代码中查找预处理器指令,然后返回代码进行替换。
这就是预处理器的工作方式吗?
这让我思考,C预处理器是多通道操作吗?
它不一定是,而且通常不是。
int bar = foo;
#define foo 1
宏仅从其定义点(#define
行)到文件末尾(或对应的#undef
)可见。在上文中,第一行是而不是被int bar = 1;
替换;相反,它保持为int bar = foo;
,只有在已经声明了foo
的情况下才有效。(该声明将被#define
隐藏,但仅适用于宏定义之后的引用。)
预处理器的行为(更准确地说,前几个翻译阶段的行为)被设计为允许单次通过实现。本规范见C标准(N1570为最新草案)第5.1.1.2节。"预处理器"通常对应于阶段1到4,或者可能对应于阶段5。
相关文章:
- MPI突然停止了对多个核心的操作
- 为表示一个或多个操作的C++函数的int参数寻找类型安全的替换
- 带有多通道内核的图像卷积
- 前向迭代器多通道保证的优势
- 初始化多通道 OpenCV 垫
- 如何在 [action-if-true] 中执行多个操作
- 如何在C 中的用户提交变量列表中执行多个操作
- CV :: Split或eigen ::大步:这对于从OPENCV映射多通道矩阵更有效
- 是C预处理器的多通道操作
- 多通道垫子显示功能
- 如何处理在同一套接字上发布多个操作的情况
- 是否可以在 C/C++ 中 for 循环的增量部分执行多个操作
- 重载的*运算符在多个*操作后调用析构函数时失败
- 具有不同成员变量的多个操作的泛型类
- 多通道背投断言(j < nimages)
- 我可以在多个操作中重复使用 zlib 的z_stream吗?
- 使用OpenCV多通道Mat沿着通道方向访问像素
- 如何在Cassandra中执行具有多个操作的事务
- 在 opencv 中访问多通道阵列中的整个通道
- 访问多通道OpenCV Mat中的元素