可以为Win32平台正确编译代码,但对于WinCe平台,它会在调试模式下导致许多错误。错误与头文件cstdio,cstring和cwchar有关。
Microsoft Visual Studio 9.0 \ VC \ ce \ include \ cstdio(82):错误C2039:'_ _s_instead_use_StringCbGetsA_or_StringCchGetsA':不是“全局命名空间”的成员
错误C2873:'_ _s_instead_use_StringCbGetsA_or_StringCchGetsA':符号不能用于使用声明
错误C2873:'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA':符号不能在using声明中使用
ce7 \ include \ cwchar(66):错误C2873:'swprintf_instead_use_StringCbPrintfW_or_StringCchPrintfW':符号不能在using声明中使用
\ include \ armv4i \ stdlib.h(146):错误C2065:'_ malloca':未声明的标识符
答案 0 :(得分:1)
A后缀通常连接到具有8位和16位unicode版本的ASCII版本的函数(后者通常以W作为后缀)。 Windows CE本身仅支持unicode,因此如果您尝试构建使用ASCII的代码,则可能会遇到问题。在标准C / C ++库中部分实现了ASCII函数,它是最常用的函数和对象,但是您引用的函数和对象可能不存在。 你可以尝试定义UNICODE和_UNICODE来构建" W"该代码的版本,希望它的任何部分都假设1个字符= 1个字节。
答案 1 :(得分:1)
我所做的就是更改包含文件的顺序。我把" winsock2.h"其他头文件后的头文件。而现在我没有得到这些错误。
Before I had:
#include < winsock2.h >
#include < vector >
#include < map >
#include < string >
After:
#include < vector >
#include < map >
#include < string >
#include < winsock2.h >