警告:缩小从'unsigned int'到'WORD {aka short unsigned int}'中{'(stride * 4u)'的转换在C中格式不正确++ 11 [-Wnarrowing]将无符号整数缩小为无符号整数
我想不通为什么我收到这样的警告编译MinGW的,从下面的代码:里面那些
unsigned stride = 3;
D3DVERTEXELEMENT9 NORMALELEMENT =
{ 0, stride * sizeof(gs_scalar), D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL, 0 };
if (useNormals) stride += 3;
据抱怨stride * sizeof(gs_scalar)
(gs_scalar是float
)大括号,但我不明白怎么样由于sizeof
返回字节数,所以他是一个缩小的转换。我尝试将stride
的数据类型更改为WORD,DWORD,CHAR,所有内容,但我一直得到相同或相似的警告。
使用大括号初始化可以防止在C++ 11中缩小转换次数。如果这是你的意图,你有没有试过在明确的转换中包装'stride * sizeof(gs_scalar)'? – goji
这是C++ 11中的错误*,不是警告... –