Как комментарии в стиле C++ обрабатываются в GCC 4.3.3 по умолчанию?

StackOverflow https://stackoverflow.com/questions/1657643

  •  11-09-2019
  •  | 
  •  

Вопрос

Я использую GCC 4.3.3 в 64-разрядной версии Ubuntu 9.04 и получаю ошибки при использовании комментариев в стиле C++ в коде C.Когда я говорю «по умолчанию» в заголовке, я имею в виду просто вызов gcc test.c

Согласно документам GCC 4.3.3 (здесь), это поддерживается... но я все равно получаю ошибки.

Эти ошибки исчезли с помощью простого добавления -std=c99 к моей строке компиляции, так что моя проблема решена.Любопытно, есть ли у кого-нибудь из экспертов GCC объяснение этому, поскольку мне кажется, что это явное противоречие с документацией.

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

int main( void )
{
   return 0;
}
Это было полезно?

Решение

По умолчанию GCC использует стандарт C89/90 с расширениями GCC.Строго говоря, по умолчанию он не соответствует какому-либо конкретному стандарту, поскольку по умолчанию он не выдает никаких диагностических сообщений в ситуациях, когда такие сообщения требуются стандартом.Вам нужно запустить gcc -ansi -pedantic режим (возможно также -Wall), чтобы он соответствовал стандарту.И в этом случае у вас снова будет C89/90.

Другие советы

Возможно, Ubuntu отменяет значение по умолчанию, который должен быть gnu89.Конечно, я не понимаю этого с моей копией GCC 4.3 (в Debian).

% 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, IS -STD = GNU89

И // comments признаны -std=gnu89

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top