-Wconversion
은 g ++로 비트 필드에 값을 할당 할 때 경고를 생성합니다.C++ 비트 필드 및 -Wconversion
소스 파일 :
struct Foo
{
public:
unsigned int x : 4;
unsigned int y : 9;
unsigned int z : 17;
};
int main(int, char**)
{
int a = 12;
Foo f;
f.x = a;
f.x = (unsigned int)a;
f.x = (unsigned char)a;
f.x = (unsigned short)a;
f.x = (unsigned)a;
f.y = a;
f.y = (unsigned int)a;
f.y = (unsigned char)a; // no warning, sizeof(char) < 9
f.y = (unsigned short)a;
f.y = (unsigned)a;
f.z = a;
f.z = (unsigned int)a;
f.z = (unsigned char)a; // no warning, sizeof(char) < 17
f.z = (unsigned short)a; // no warning, sizeof(char) < 17
f.z = (unsigned)a;
}
컴파일 출력 : I (이 파일에 포함) 내 프로젝트의 다른 부분에 사용할 수 -Wconversion
원하는
$ g++ --version
g++ (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
<snip>
$ g++ -Wconversion test.cpp
test.cpp: In function ‘int main(int, char**)’:
test.cpp:13:8: warning: conversion to ‘unsigned char:4’ from ‘unsigned int’ may alter its value [-Wconversion]
test.cpp:14:22: warning: conversion to ‘unsigned char:4’ from ‘unsigned int’ may alter its value [-Wconversion]
test.cpp:15:23: warning: conversion to ‘unsigned char:4’ from ‘unsigned char’ may alter its value [-Wconversion]
test.cpp:16:24: warning: conversion to ‘unsigned char:4’ from ‘short unsigned int’ may alter its value [-Wconversion]
test.cpp:17:18: warning: conversion to ‘unsigned char:4’ from ‘unsigned int’ may alter its value [-Wconversion]
test.cpp:19:8: warning: conversion to ‘short unsigned int:9’ from ‘unsigned int’ may alter its value [-Wconversion]
test.cpp:20:22: warning: conversion to ‘short unsigned int:9’ from ‘unsigned int’ may alter its value [-Wconversion]
test.cpp:22:24: warning: conversion to ‘short unsigned int:9’ from ‘short unsigned int’ may alter its value [-Wconversion]
test.cpp:23:18: warning: conversion to ‘short unsigned int:9’ from ‘unsigned int’ may alter its value [-Wconversion]
test.cpp:25:8: warning: conversion to ‘unsigned int:17’ from ‘unsigned int’ may alter its value [-Wconversion]
test.cpp:26:22: warning: conversion to ‘unsigned int:17’ from ‘unsigned int’ may alter its value [-Wconversion]
test.cpp:29:18: warning: conversion to ‘unsigned int:17’ from ‘unsigned int’ may alter its value [-Wconversion]
. 여기에 할당 문을 "수정"하여 경고를받지 않으려면 어떻게해야합니까?
'int'를 사용하면 어떻게됩니까? –
@ 0A0D 업데이트를 참조하십시오. – robert