이 간단한 프로그램이 있습니다.
#include <stdio.h>
struct S
{
int i;
};
void swap(struct S *a, struct S *b)
{
struct S temp;
temp = *a /* Oops, missing a semicolon here... */
*a = *b;
*b = temp;
}
int main(void)
{
struct S a = { 1 };
struct S b = { 2 };
swap(&a, &b);
}
예를 들어 ideone.com에서 볼 수 있듯이 이것은 오류를 제공합니다.
prog.c: In function 'swap': prog.c:12:5: error: invalid operands to binary * (have 'struct S' and 'struct S *') *a = *b; ^
컴파일러가 누락 된 세미콜론을 감지하지 못하는 이유는 무엇입니까?
참고 :이 질문과 답변은 이 질문에 의해 동기가 부여되었습니다 . 이와 유사한 다른 질문 이 있지만 C 언어의 자유 형식 용량에 대해 언급 한 내용이 없는데 이것이이 문제와 관련 오류의 원인입니다.