0

例如:

啊包含:

#define DRAWING_OBJECTS_COUNT 4

Bh 包含:

#include "A.h"
int arrayExample[DRAWING_OBJECTS_COUNT];

当我尝试这个时,控制台说

DRAWING_OBJECTS_COUNT

在 B 类中未定义。

让 B 类知道 A 类的常量的最佳方法是什么?此外,预处理器指令是否仅适用于它所写入的文件?

4

2 回答 2

1

正如它发布的那样,代码应该可以工作(但这并不意味着它是好的代码)。您的问题可能是循环包含(很可能),或后续的#undef.

让 B 类知道 A 类的常量的最佳方法是什么?

改用 aconst intenum值 - 定义是如此老派。

此外,预处理器指令是否仅适用于它所写入的文件?

它取决于 - 如果在文件中定义,它适用于该翻译单元,从其声明点开始 - 这意味着您可以在标题中定义它,并且它将在包含该标题的文件中可见。您还可以使用编译器选项定义预处理器指令,这使得它们对所有编译的文件可见。

于 2013-07-02T16:23:47.003 回答
0

预处理器指令不知道范围。#define 之后的每次出现的标记都将被替换,无论文件,类,无论是什么,直到您获得#undef该标记,或者直到编译器读取所有输入。

如果您想以DRAWING_OBJECTS_COUNT某种方式表明它与类 A 相关,请在 A 内将其声明为 a const intor enum

您能否发布确切的错误消息和源代码行,并检查#undefs. 并确保你包括A.h

于 2013-07-02T16:29:42.510 回答