Как я могу заставить clang выдавать ошибки, если код строго не соответствует стандарту?

Я пишу библиотеку C++11 и хочу, чтобы она работала со всеми компиляторами, поддерживающими C++11. Я не хочу случайно написать код, который не является стандартным (например, использует языковые расширения, такие как VLA или блоки). Как я могу заставить clang отключить все языковые расширения, чтобы я мог писать только соответствующий код?


person Community    schedule 14.01.2012    source источник
comment
Я не думаю, что вы можете. Вы можете сделать всю диагностику, которую требует стандарт, в хард-ошибку (-pedantic-errors с GCC, я думаю, что также принята clang), но без языковых расширений некоторые из стандартных заголовков не могут быть реализованы, поэтому, если вы полностью отключите все расширения, вы можете больше не используйте эти заголовки...   -  person    schedule 14.01.2012
comment
clang не выдает предупреждений внутри системных заголовков (даже тех, которые повышаются до ошибок с помощью -pedantic-errors или -Werror), поэтому нет проблем со стандартными заголовками, если вы включите -pedantic-errors.   -  person Richard Smith    schedule 18.01.2012


Ответы (1)


Попробуйте один из этих:

-pedantic: Warn on language extensions.

-pedantic-errors: Error on language extensions.
person Igor Oks    schedule 14.01.2012