How to check (via the preprocessor) if a C source file is being compiled as C++ code

牧云@^-^@ 提交于 2019-12-17 22:00:03

问题


The question title should say it all, but here's an example of what sort of thing I'm looking for:

#ifndef THE_IDENTIFIER_THAT_WOULD_INDICATE_BEING_COMPILED_AS_CPLUSPLUS

/*
 * Example of something that would matter.
 */
typedef enum _bool bool;
enum _bool { false, true };

#endif

What is the identifier? It's bugging me severely, as I know I've seen code that does this before.

I'm using GCC, by the way.

(I'm surprised I couldn't find a duplicate somewhere on SO. If someone else can find one, feel free to redirect me and close this as a dupe.)


回答1:


#ifndef __cplusplus

If I remember correctly.




回答2:


The identifier is __cplusplus

#ifdef __cplusplus
#error NO C++ PLEASE
#endif



回答3:


#ifdef __cplusplus

with a few really ancient compilers (early versions of cfront and a couple of ports) it was c_pluplus, IIRC.




回答4:


#ifdef __cplusplus



回答5:


#ifdef __cplusplus

I think the file extension matters too, if the C++ compiler is given a .c file it will compile it as C code. i have nothing to back this up though.




回答6:


The identifier you are looking for is __cplusplus, which can be used like this:

#ifdef __cplusplus
// Code being compiled as C++.
#endif


来源:https://stackoverflow.com/questions/4149229/how-to-check-via-the-preprocessor-if-a-c-source-file-is-being-compiled-as-c

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!