#define StrToInt StrToIntA导致外部引用错误

时间:2012-09-28 10:03:28

标签: c++

我正在尝试使用函数编译包含名为CVUtil的类的旧项目 叫StrToInt(char *, int *)。 使用语法CVUtil::StrToInt(pSomeChar,pSomeInt)在项目中的多个位置调用此函数。 在尝试编译此项目时,VisStudio会将StrToInt更改为StrToIntA,因为文件Shlwapi.h包含在其中,其中包含预处理程序语句
"#define StrToInt StrToIntA"。我知道我可以通过更改函数的名称来避免这种情况,但是想知道如何在不这样做的情况下避免这种情况。 此致,Arni

3 个答案:

答案 0 :(得分:1)

你可以在包含类定义的标题中#undef StrToInt,但正确的方法是重命名该函数。

答案 1 :(得分:0)

您始终可以取消定义之前的定义:

#ifdef StrToInt
#undef StrToInt
#endif
#define StrToInt StrToIntA

然而,更好的方法仍然是选择另一个名字。

答案 2 :(得分:-1)

您最好调整链接器设置。有关* A(Ascii)和* W(宽)功能的详细信息,请参阅http://www.codeproject.com/Articles/76252/What-are-TCHAR-WCHAR-LPSTR-LPWSTR-LPCTSTR-etc。本文介绍了如何调整visual studio设置。

指令

#define fun funA

应该受到这样的保护:

#ifdef _UNICODE
# define fun funW
#else
# define fun funA
#endif