开发者

How to pass -std=c99 to g++?

开发者 https://www.devze.com 2023-04-06 07:32 出处:网络
My cpp file includes C header that has a enumerator with comma at the end. As a result g++ produces warning:

My cpp file includes C header that has a enumerator with comma at the end. As a result g++ produces warning:

warning: comma at end of enumerator list

How can I tell g++ to use -std=c99 for that cpp file? That is,开发者_如何学C how can I avoid this warning?

I already tried: -std=c99 but it resulted in: "cc1plus: warning: command line option "-std=c99" is valid for C/ObjC but not for C++"

Note: the inclusion of C headers is surrounded with extern "C" command.


You don't. g++ compiles C++, not C. A C header included in a C++ source file still has to follow C++ rules, even with extern "C". For example, the header cannot use class as an identifier.


#include works by simply inserting the text of the included file in the position where the #include line occurs. The result of preprocessing is a single text file which is then sent to the compiler, and you cannot change the language in the middle of the file.

Since your cpp file is being compiled as C++ code, the headers it includes will be as well. extern "C" does not change the language; it simply tells the C++ compiler that the functions declared within use the C calling convention.

0

精彩评论

暂无评论...
验证码 换一张
取 消