문제

Ubuntu 9.04 64 비트에서 GCC 4.3.3을 사용하고 있으며 C 코드에서 C ++-스타일 주석을 사용하여 오류가 발생했습니다. 제목에서 "기본적으로"라고 말하면 단순히 호출을 의미합니다. gcc test.c

GCC 4.3.3 문서에 따르면 (여기), 이것은 지원됩니다 ...하지만 어쨌든 오류가 발생했습니다.

이러한 오류는 컴파일 스트링에 간단한 -std = c99 추가로 사라져 문제가 해결되었습니다. GCC 전문가가 문서와 분명하게 모순되는 것처럼 보이기 때문에이 설명이 있는지 궁금합니다.

#include <stdio.h>
// this is a comment

int main( void )
{
   return 0;
}
도움이 되었습니까?

해결책

Defualt GCC는 GCC 확장과 함께 C89/90 표준을 사용하고 있습니다. 기본적으로 엄격하게 말하면 특정 표준에 따라 다루지 않습니다. 기본적으로 표준에 의해 그러한 메시지가 필요한 상황에서 진단 메시지를 발행하지 않기 때문입니다. GCC를 실행해야합니다 -ansi -pedantic 모드 (아마도 -Wall) 표준을 고수하기 위해. 이 경우 다시 한번 C89/90을 가질 수 있습니다.

다른 팁

우분투가 기본값을 우선시하고있을 가능성이 있습니다. GNU89 여야합니다. 확실히 나는 GCC 4.3 (데비안)의 사본으로 그것을 얻지 못합니다.

% echo '// foo' | gcc-4.3 -x c -c -
% echo '// foo' | gcc-4.3 -std=gnu89 -x c -c -    
% echo '// foo' | gcc-4.3 -std=c89 -x c -c -    
<stdin>:1: error: expected identifier or '(' before '/' token

인용 http://gcc.gnu.org/onlinedocs/gcc/standards.html#standards

기본값은 C 언어 방언 옵션이 제공되지 않으면 -std = gnu89입니다.

그리고 // comments 에 의해 인정됩니다 -std=gnu89

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top