65,186
社区成员




lstrcpyn(pStr, '\0', nSize);
warning C6309: Argument '2' is null: this does not adhere to function specification of 'lstrcpynW'
, 后来一想'\0'在uncode下不行,需要\0\0才行,
lstrcpyn(pStr, "\0\0", nSize);//这样?怎么感觉怪怪的,我想要一种可以在ansi和unicode下都不报的写法
lstrcpyn(pStr, _T(""), nSize);//试了半天,这样写就好了
直接写0试试看。
感谢关注,还想请教下也就是只要更改编译选项就可以将lstrcpyn 自动改成 lstrcpynW 或 lstrcpynA 那在调用时 我不想写//lstrcpyn在winbase.h中定义如下 #ifdef UNICODE #define lstrcpyn lstrcpynW #else #define lstrcpyn lstrcpynA #endif // !UNICODE
#ifdef UNICODE//这样写好麻烦。。 lstrcpynW(pStr, 0x0000, nSize); #else lstrcpynA(pStr, '\0', nSize); #endif // !UNICOD
[quote=引用 1 楼 turingo 的回复:] 要用lstrcpynW吧,0可以用0x0000来表达。 [quote=引用 楼主 nwao7890 的回复:] 关于这个函数以前一直这样用//想要一句话在unicode和ansi下都能正常编译的话 lstrcpyn(pStr, 这里写该什么, nSize);
今天换了unicode后,提示lstrcpyn(pStr, '\0', nSize);
, 后来一想'\0'在uncode下不行,需要\0\0才行, 要怎么写呢warning C6309: Argument '2' is null: this does not adhere to function specification of 'lstrcpynW'
求大神指点lstrcpyn(pStr, "\0\0", nSize);//这样?怎么感觉怪怪的,我想要一种可以在ansi和unicode下都不报的写法
//lstrcpyn在winbase.h中定义如下
#ifdef UNICODE
#define lstrcpyn lstrcpynW
#else
#define lstrcpyn lstrcpynA
#endif // !UNICODE
也就是只要更改编译选项就可以将lstrcpyn 自动改成 lstrcpynW 或 lstrcpynA
那在调用时
我不想写
#ifdef UNICODE//这样写好麻烦。。
lstrcpynW(pStr, 0x0000, nSize);
#else
lstrcpynA(pStr, '\0', nSize);
#endif // !UNICOD
//想要一句话在unicode和ansi下都能正常编译的话
lstrcpyn(pStr, 这里写该什么, nSize);
要用lstrcpynW吧,0可以用0x0000来表达。 [quote=引用 楼主 nwao7890 的回复:] 关于这个函数以前一直这样用今天换了unicode后,提示lstrcpyn(pStr, '\0', nSize);
, 后来一想'\0'在uncode下不行,需要\0\0才行, 要怎么写呢warning C6309: Argument '2' is null: this does not adhere to function specification of 'lstrcpynW'
求大神指点lstrcpyn(pStr, "\0\0", nSize);//这样?怎么感觉怪怪的,我想要一种可以在ansi和unicode下都不报的写法
关于这个函数以前一直这样用今天换了unicode后,提示lstrcpyn(pStr, '\0', nSize);
, 后来一想'\0'在uncode下不行,需要\0\0才行, 要怎么写呢warning C6309: Argument '2' is null: this does not adhere to function specification of 'lstrcpynW'
求大神指点lstrcpyn(pStr, "\0\0", nSize);//这样?怎么感觉怪怪的,我想要一种可以在ansi和unicode下都不报的写法