我正在尝试使用Dev-C++ (版本4.9.9.2)和它附带的标准编译器(我认为是使用MinGW的g++ )在32位Windows XP Pro SP3下重建某人的旧C++项目。在其中一个文件中包含了strsafe.h,当我尝试编译时,我得到了这个错误:
expected primary-expression before ',' token错误所指向的代码行位于strsafe.h ( Microsoft(?)库头文件)看起来都像这样:
hr = StringGetsExWorkerA(pszDest, cchDest, cbDest, NULL, NULL, 0);这些行中的每一行都有两个“预期的主表达式”错误。我发现了this forum thread,它表明null值没有被正确识别,并建议我在strsafe.h之前包含<cstddef>。我这样做了,但它不起作用。此外,看起来NULL实际上是定义的,因为当我在包含strsafe.h之前执行'#define NULL 0‘时,我得到一个错误,告诉我我正在重新定义它。
很抱歉我不能提供更多的细节,但是重现这个错误的代码是简单的'#include <strsafe.h>',所以我真的不知道还能说什么。有没有人知道可能发生了什么,以及我如何解决这个问题?
谢谢!
(我已经尝试下载最新版本的Microsoft Platform SDK,因此我有一个最新版本的strsafe.h)
发布于 2009-09-03 15:08:01
我想知道NULL的定义是什么?也许它不是0,它可以是任何东西(尽管如果有人将NULL定义为非0的值,这将非常奇怪)。
尝试下面的方法,看看它是否有效。
#undef NULL
#define NULL 0发布于 2009-09-03 15:34:50
我最初的想法是,这些标识符中至少有一个尚未声明。
尝试以下操作:
您可能会发现标识符没有声明,或者其中一个被声明为类型而不是对象。
发布于 2009-09-03 15:51:31
查看strsafe.h文件,这个函数似乎是一个内部函数(它被#ifndef STRSAFE_LIB_IMPL .... #endif块包围),并且它被StringCbGetsExA或StringCbGetsExA之类的函数所包围。你不是应该用它们来代替吗?
https://stackoverflow.com/questions/1373940
复制相似问题