相关疑难解决方法(0)

printf,wprintf,%s,%S,%ls,char*和wchar*:编译器警告未公布错误?

我试过以下代码:

wprintf(L"1 %s\n","some string"); //Good
wprintf(L"2 %s\n",L"some string"); //Not good -> print only first character of the string
printf("3 %s\n","some string"); //Good
//printf("4 %s\n",L"some string"); //Doesn't compile
printf("\n");
wprintf(L"1 %S\n","some string"); //Not good -> print some funny stuff
wprintf(L"2 %S\n",L"some string"); //Good
//printf("3 %S\n","some string"); //Doesn't compile
printf("4 %S\n",L"some string");  //Good
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

1 some string
2 s
3 some string

1 g1 %s

2 some string
4 some string
Run Code Online (Sandbox Code Playgroud)

所以说:看来双方wprintfprintf能正确打印都一个char*和*WCHAR,但前提是准确的说明符使用.如果使用了错误的说明符,您可能不会收到编译错误(也没有警告!)并最终导致错误行为.你有同样的行为吗?

注意:这是在Windows下测试的,用MinGW和g ++ 4.7.2 …

c mingw

22
推荐指数
4
解决办法
11万
查看次数

标签 统计

c ×1

mingw ×1