簡體   English   中英

如何檢查(通過預處理器)C源文件是否正在編譯為C ++代碼

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

問題標題應該說明一切,但這里有一個我正在尋找的東西的例子:

#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

什么是標識符? 它嚴重困擾着我,因為我知道我之前已經看到過這樣做的代碼。

順便說一句,我正在使用GCC。

(我很驚訝我在某個地方找不到副本。如果其他人可以找到一個,請隨意重定向我並將其作為一個騙局關閉。)

#ifndef __cplusplus

如果我沒記錯的話。

標識符為__cplusplus

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

#ifdef __cplusplus

有一些非常古老的編譯器(早期版本的cfront和幾個端口),它是c_pluplus ,IIRC。

#ifdef __cplusplus

您要查找的標識符是__cplusplus ,可以像這樣使用:

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

#ifdef __cplusplus

我認為文件擴展也很重要,如果給C ++編譯器一個.c文件,它會將它編譯為C代碼。 我沒有什么可以支持的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM