이전에는 gcc 컴파일 시 발생하는 경고에 대해서는 무시했었다. 에러가 아닌이상 돌아가는 경우가 많았으니까. 그러나 이제는 그 원인 하나하나에 해결해서 깔끔하게 아무런 경고 메세지가 출력되지 않는 것을 추구하고 있다. 이런 이유에서 자주 무시하고, 해결 방법을 알아보지 않았던 경고 메세지 하나를 소개하고, 해결 방법을 적어본다.


unsigned int의 출력을 위한 포맷: %zu


 


 위 경고 메세지가 발생한 원인은 sizeof 함수에 있다. 소스코드를 굳이 포함시킬 필요가 없어서 배제했으나, 그 코드 내에서는 구조체를 선언하고, 그 구조체의 크기를 출력하기 위해 sizeof 함수를 사용했다. 사이즈를 %d 포맷으로 출력을 시도하는데, 이 때 경고 메세지가 발생한다. 이를 해결하기 위해서는 sizeof 연산의 출력을 위한 포맷으로 %zu를 사용하면 된다. 아래의 코드를 참조하자.


printf("size: %zu\n", sizeof(pos1));