gpt4 book ai didi

c++ - C宏是隐式转换的吗?

转载 作者:可可西里 更新时间:2023-11-01 18:43:18 25 4
gpt4 key购买 nike

我搜索过 SO,但没有找到这个具体问题的答案。如果已经回答,请原谅我。

如果您有以下情况:

#define MACRO  40

您不会将它分配给您在循环中使用它的变量:

for(int i = 0; i < MACRO; i++) {...

然后每个处理器创建:

for(int i = 0; i < 40; i++) {...

既然比较的是 int i 类型,那么编译器会隐式地将它转换为 int 吗?我看过这个问题 Type of #define variables , Edgar Bonet 的很多答案都暗示编译器选择如何处理宏的顺序?

这个问题,How does C++ implicitly cast arguments to a comparator such as <? , 也有人建议,但只描述了隐式转换如何与两种类型进行比较。由于宏实际上没有类型,我不确定这是否适用。

最佳答案

在 C 和 C++ 中,宏实际上是就地替换。预处理器将遇到这些 #define 并在找到它们时替换它们。这就是您可以在宏中嵌套宏的方式,并且只需要 1 次预处理。

关于c++ - C宏是隐式转换的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24147150/

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