컴파일러에게 알려줄 수있는 방법이 있는지 궁금합니다 (gcc 버전 4.1.2 20080704 (Red Hat 4.1.2-46) 또는 icc 11.1) long-to-int 암시 적 변환이 발생할 때마다 경고.C : 암시 적 long에서 int 로의 변환에 대해 경고합니다.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
int n = atol(argv[1]);
printf("int: %d\n", n);
long int N = atol(argv[1]);
printf("long: %ld\n", N);
return 0;
}
과 :
gcc -Wall -Wconversion test.c -o test
이 경고를 생성하지 않습니다 예를 들어, 코드가 포함 된 파일
test.c
을 컴파일. 예상대로,
./test 12345678901
내가 얻을 같은 결과 바이너리를 실행 : 번호 12345678901가 긴을 INT를 오버 플로워하지만하지
int: -539222987
long: 12345678901
한다. 컴파일러에서 이와 같은 일이 발생할 때마다 알려주고 싶습니다. 의외로 옵션 -Wconversion은 (저에게) 그렇게하지 않습니다.
감사합니다,
미셸
이해야 할 허용 대답 6 년 후 : –