这是我正在使用的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,它已定义,它编译,但它无法访问该值!我做错了什么?
答案 0 :(得分:7)
我假设您正在调试应用程序,因为您说“检查”:符号常量在编译时由其值替换。在运行时,您再也看不到它们了。
答案 1 :(得分:3)
您确定要包含头文件吗? 轻松检查 - 将#define从头文件复制到C文件的开头。
仔细检查头文件中的#ifndef警卫。
答案 2 :(得分:0)
在编译器中找到转储预处理源的选项,以便您可以看到实际发生的情况。您的符号可能未定义,或者您的标题未按预期正确包含。</ p>
答案 3 :(得分:-1)
您使用的是较旧的C编译器吗?您正在使用C ++样式注释//而不是/ * * /的C样式注释。较旧的C编译器无法识别//.