Вы не можете подавить эту диагностику с помощью чего-либо, что вы пишете в исходном файле .c
, потому что причина диагностики уже была обнаружена и диагностика выпущена до чтения исходного файла .c
, как вы можете наблюдать с этим источникомfile:
fail.c
#error Stop right here
и:
$ clang -c -fno-objc-exceptions fail.c
clang: warning: argument unused during compilation: '-fno-objc-exceptions' [-Wunused-command-line-argument]
fail.c:1:2: error: Stop right here
#error Stop right here
^
1 error generated.
Причина диагностики заключается в том, что -fno-objc-exceptions
является опциейприменимо только к компиляции Objective C или Objective C ++, и Clang делает вывод, что мы компилируем C, а не Objective или Objective C ++, только из того факта, что имя файла fail.c
имеет расширение .c
, а не .m
или .mm