我正在尝试在 Windows XP Pro SP3 32 位下使用 Dev-C++(版本 4.9.9.2)及其附带的标准编译器(我认为使用 MinGW 的 g++)重建某人的旧 C++ 项目。在包含 strsafe.h 的文件之一中,当我尝试编译时,出现此错误:
expected primary-expression before ',' token
错误指向的代码行位于 strsafe.h(Microsoft(?)库头文件)中,全部如下所示:
hr = StringGetsExWorkerA(pszDest, cchDest, cbDest, NULL, NULL, 0);
每一行都有 2 个“预期主要表达式”错误。我发现this forum thread这表明 NULL 值未被正确识别,并建议我包含 <cstddef>
在 strsafe.h 之前。我这样做了,但没有用。另外,看起来 NULL 实际上已经定义了,因为当我在包含 strsafe.h 之前执行“#define NULL 0”时,我收到一条错误消息,告诉我正在那里重新定义它。
很抱歉,我无法提供更多详细信息,但重现此错误的代码很简单:'#include <strsafe.h>
’,所以我真的不知道还能说什么。有谁知道可能会发生什么以及我该如何解决这个问题?
谢谢!
(我已经尝试下载最新版本的 Microsoft Platform SDK,因此我拥有最新版本的 strsafe.h)
最佳答案
我想知道 NULL 的定义是什么?也许它不是 0,它可以是任何东西(尽管如果有人将 NULL 定义为 0 以外的值,那会很奇怪)。
尝试以下操作,看看是否有效。
#undef NULL
#define NULL 0
关于c++ - strsafe.h 中 ',' 标记之前的预期主表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1373940/