파일 매직 넘버를 저장하는 구문에서 경고가 발생합니다. (리눅스/gcc)
main.c: In function ‘main’:
main.c:113:33: warning: multi-character character constant [-Wmultichar]
archive->header.magic = 'AF';
math.h 쓸 때 처럼 gcc 명령어에 새로운 옵션같은 것이 필요한건가요?
GCC 환경에서는 코드 위에 다음 선언을 추가하거나
#pragma GCC diagnostic ignored
컴파일 옵션에 다음을 추가하면 됩니다.
-Wmultichar
gcc main.c -Wmultichar
이렇게 하면 됩니다.
// C program to demonstrate
// Multicharacter literal
#pragma GCC diagnostic ignored "-Wmultichar"
// This disables the
// multi-character warning
#include <stdio.h>
// Driver code
int main()
{
printf("%d", 'abcd');
return 0;
}
다중문자라는 것을 컴파일러 확장으로 지원하고 있습니다.
'a' is a character literal. "abcd" is a string literal. 'abcd' is a multicharacter literal.
'abcd'로 쓰게 되면 다중문자 리터럴이고, C 언어에서는 파일 앞에 파일 타입 등의 구분 문자열을 쓰게 됩니다.
파일 첫 두 바이트가 MZ이면 .exe 실행 파일을 뜻합니다. 그럴 때도 'MZ'로 씁니다.
header[0] == 'M' && header[1] == 'Z'
로 쓰는 것보단 코딩이 단순해지기 때문에 대부분의 컴파일러는 이를 지원합니다.