无法访问C中的#defined常量

时间:2009-05-21 22:05:59

标签: c++ c c-preprocessor

这是我正在使用的C程序,在头文件中我定义了一个偏移量:

#define LDR_DATA_PATHFILENAME_OFFSET    0x24    // MODULE_ITEM.PathFileName

稍后在程序中我使用它如下:

pImageName = (PUNICODE_STRING)( ((DWORD)(pUserModuleListPtr)) + 
(LDR_DATA_PATHFILENAME_OFFSET-dwOffset));

当检查LDR的值时,我得到一个 CXX0017:错误:符号“LDR_DATA_PATHFILENAME_OFFSET”未找到。 Erm,它已定义,它编译,但它无法访问该值!我做错了什么?

4 个答案:

答案 0 :(得分:7)

我假设您正在调试应用程序,因为您说“检查”:符号常量在编译时由其值替换。在运行时,您再也看不到它们了。

答案 1 :(得分:3)

您确定要包含头文件吗? 轻松检查 - 将#define从头文件复制到C文件的开头。

仔细检查头文件中的#ifndef警卫。

答案 2 :(得分:0)

在编译器中找到转储预处理源的选项,以便您可以看到实际发生的情况。您的符号可能未定义,或者您的标题未按预期正确包含。<​​/ p>

答案 3 :(得分:-1)

您使用的是较旧的C编译器吗?您正在使用C ++样式注释//而不是/ * * /的C样式注释。较旧的C编译器无法识别//.