为什么写c的时候用atoi函数总提示undeclared identifier,小文件可以编译通过

为什么写c的时候用atoi函数总提示undeclared identifier,小文件可以编译通过,win32工程就不行了,该怎么办?求助~

控制台工程下(就是你说的小文件),使用atoi函数需要加头文件包含:#include<stdlib.h>

win32工程下,因为默认包含了#include<windows.h>,atoi函数是默认可以直接使用的。

你使用不了,一般是因为你的工程是UNICODE模式的(而不是多字节字符集模式),这种模式下不能使用atoi函数,是因为UNICODE模式下默认要求使用的宽字节字符串atoi函数不支持。

这时候,使用atoi在UNICODE下的对应函数wtoi就可以了。

int _wtoi(const wchar_t *);

 而更合适的函数是_ttoi,这个函数可以适应代码在字符集之间切换。

追问

只是把atoi换成wtoi吗?

换了没用啊

追答int i = _wtoi(L"123");

除非是其它错误,在win32工程下,这样使用没有问题。

追问

直接这样写吗

追答

头文件加上#include<tchar.h>

函数使用:

int i1 = _ttoi(str1);

追问

还是没用

追答

我这里测试没有任何问题。

你的程序使用了stdafx预编译,这里需要看include次序和包含屏蔽的问题了。调整包含在之后看看,并且在vc6的安装目录查找这个tchar.h文件,看看是否存在并且目录在菜单(工具-选项-目录)的包含之中。

追问

好的我看下,谢谢

通过了,是把那个头文件放在后面就好了

谢谢了

真的谢谢

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-01-30
有没有加头文件? #include <stdlib.h>
第2个回答  2016-01-30
有加这个头文件吗? #include<stdlib.h>追答

请附上代码好吧!要不我看不出来也,求采纳

追问

加了,还只是小文件里可以用

追答

嗯!你看看这个有帮助不 http://bbs.csdn.net/wap/topics/380058721