我搜索了SO,但没有找到这个具体问题的答案.请原谅我已经回答了.
如果您有以下内容:
#define MACRO 40
Run Code Online (Sandbox Code Playgroud)
您不将它分配给在循环中使用它的变量:
for(int i = 0; i < MACRO; i++) {...
Run Code Online (Sandbox Code Playgroud)
然后,每个处理器创建:
for(int i = 0; i < 40; i++) {...
Run Code Online (Sandbox Code Playgroud)
然后编译器会将它隐式地转换为int,因为比较是使用类型int i吗?我看过这个问题#define变量的类型,而Edgar Bonet的一些答案暗示了编译器选择如何处理宏的顺序?
这个问题,C++如何隐式地将参数转换为比较器,如<?,也有人建议,但只描述了隐式转换如何与两种类型进行比较.由于宏实际上没有类型,我不确定这是否适用.