例如:
啊包含:
#define DRAWING_OBJECTS_COUNT 4
Bh 包含:
#include "A.h"
int arrayExample[DRAWING_OBJECTS_COUNT];
当我尝试这个时,控制台说
DRAWING_OBJECTS_COUNT
在 B 类中未定义。
让 B 类知道 A 类的常量的最佳方法是什么?此外,预处理器指令是否仅适用于它所写入的文件?
例如:
啊包含:
#define DRAWING_OBJECTS_COUNT 4
Bh 包含:
#include "A.h"
int arrayExample[DRAWING_OBJECTS_COUNT];
当我尝试这个时,控制台说
DRAWING_OBJECTS_COUNT
在 B 类中未定义。
让 B 类知道 A 类的常量的最佳方法是什么?此外,预处理器指令是否仅适用于它所写入的文件?
正如它发布的那样,代码应该可以工作(但这并不意味着它是好的代码)。您的问题可能是循环包含(很可能),或后续的#undef
.
让 B 类知道 A 类的常量的最佳方法是什么?
改用 aconst int
或enum
值 - 定义是如此老派。
此外,预处理器指令是否仅适用于它所写入的文件?
它取决于 - 如果在文件中定义,它适用于该翻译单元,从其声明点开始 - 这意味着您可以在标题中定义它,并且它将在包含该标题的文件中可见。您还可以使用编译器选项定义预处理器指令,这使得它们对所有编译的文件可见。
预处理器指令不知道范围。#define 之后的每次出现的标记都将被替换,无论文件,类,无论是什么,直到您获得#undef
该标记,或者直到编译器读取所有输入。
如果您想以DRAWING_OBJECTS_COUNT
某种方式表明它与类 A 相关,请在 A 内将其声明为 a const int
or enum
。
您能否发布确切的错误消息和源代码行,并检查#undef
s. 并确保你包括A.h