㈠ 如何在C語言中用宏來判斷當前編譯器
1、_MSC_VER 是微軟C/C++編譯器——cl.exe 編譯代碼時預定義的一個宏。需
要針對cl 編寫代碼時, 可以使用該宏進行條件編譯。
2、_MSC_VER 的值表示cl 的版本。需要針對cl 特定版本編寫代碼時, 也可以使用
該宏進行條件編譯。
3、_MSC_VER 的類型是"int",具體版本號定義如下:
MS VC++ 9.0 _MSC_VER = 1500
MS VC++ 8.0 _MSC_VER = 1400
MS VC++ 7.1 _MSC_VER = 1310
MS VC++ 7.0 _MSC_VER = 1300
MS VC++ 6.0 _MSC_VER = 1200
MS VC++ 5.0 _MSC_VER = 1100
其中MS VC++ 9.0 就是Visual C++ 2008,MS VC++ 8.0 就是Visual C++2005。
二、介紹預定義宏「__GNUC__」
1、__GNUC__ 是gcc 編譯器編譯代碼時預定義的一個宏。需要針對gcc 編寫代碼時,
可以使用該宏進行條件編譯。
2、__GNUC__ 的值表示gcc 的版本。需要針對gcc 特定版本編寫代碼時,也可以使
用該宏進行條件編譯。
3、__GNUC__ 的類型是「int」
三、預定義宏"__MINGW32__"
1、MinGW編譯器
四、symbian sdk 預定義宏:
symbian 平台,定義"__SYMBIAN32_"
3rd MR 版及之前的那個3rd 版本,定義"__SERIES60_30__"
3rd FP1 版,定義"__SERIES60_31__"
3rd FP2 版,定義"__SERIES60_32__"
另外,還有一個"__SERIES60_3x__"。若不需區分具體是哪一個3rd 版,則用之。
㈡ vc判斷是32位編譯還是64位編譯判斷是debug編譯還是release編譯
1.判斷是debug編譯還是release編譯。
如果_DEBUG定義了表示是debug編譯,否則是release編譯。
2.判斷是32位編譯還是64位編譯。
在 Win32 配置下,_WIN32 有定義,_WIN64 沒有定義。在 x64 配置下,兩者都有定義。即在 VC 下,_WIN32 一定有定義。
因此,WIN32/_WIN32 可以用來判斷是否 Windows 系統(對於跨平台程序),而 _WIN64 用來判斷編譯環境是 x86 還是 x64。附一個表:
常量\定義 預定義選項 Windows.h VC編譯器
WIN32 Win32 √(minwindef.h) ×
_WIN32 × × √
_WIN64 × × x64
最後附上根據相應編譯情況,進行有條件的鏈接相應靜態庫的示例代碼,其實就是一些宏定義語句的使用:
[cpp] view plain在CODE上查看代碼片派生到我的代碼片
#include "json/json.h"
#ifdef _DEBUG
#ifndef _WIN64
#pragma comment(lib,"json/json_mtd.lib")
#else
#pragma comment(lib,"json/json_mtd_x64.lib")
#endif
#else
#ifndef _WIN64
#pragma comment(lib,"json/json_mt.lib")
#else
#pragma comment(lib,"json/json_mt_x64.lib")
#endif
#endif
using namespace Json;
㈢ GCC是什麼編譯器跟vc自帶的有什麼不同
GCC的全稱是GNU Compiler Collection
是GNU下屬的編譯器集合, 包括C/C++, JAVA, Perl, Python等語言.
你問他和VC有什麼不同?
我要告訴你的是:
1、GCC是一個編譯器集合, VC是MS開發的Windows系統C/C++ IDE.
2、GCC中的C/C++標准庫代碼和VC肯定是不同的, MS一般都是從別人那買來用, 比如Dinkumware, GCC C/C++的標准庫就是GNU自己寫的了, 當然這遵循GPL, MS雖然也可以免費拿來用, 但是MS歷來仇視GPL和Linux. 還有就是GCC C/C++的標准庫對C/C++標準的貌似是最好的.
3、Linux的桌面操作系統基本都集成安裝了KDE(K Desktop Environment), X-Windows等圖形操作系統界面, 所以各種包裝了GCC編譯器內核的IDE應運而生, 比如Ubuntu, Mandriva, Fedora, Debian等操作系統中都有自帶的GCC IDE, 當然你也可以用Commond Line來操作和編譯代碼.
㈣ 如何查看編譯器當前使用的是哪個c++標准
這個要看不同編譯器的發布說明了,比如VC,就是檢查_MSC_VER這個宏(查看下網路和MSDN參考),標識了VC的版本,而對於C++11/14 VC也是逐步支持的,即某個版本的VC會增加支持C++11的某些特性,這些要到微軟的VC官方博客上查看
㈤ 如何在C語言中用宏來判斷當前編譯器
不同編譯器有不同的宏,具體某個編譯器在某種編譯選項下定義了哪些宏必須要查編譯器的相關文檔
例如,GCC 編譯器對應的預定義宏是 __GNUC__,用
#if__GNUC__
即可判斷是否在使用 GCC 編譯器。__GNUC__ 的具體值對應GCC的主版本號。例如 對於GCC 4.9 ,__GNUC__ 等於 4,對於 GCC 5.1 ,__GNUC__ 等於 5,次版本號可以通過 __GNUC_MINOR__ 查詢。對於 GCC 4.9,__GNUC_MINOR__ 等於 9,對於GCC 5.1,__GNUC_MINOR__等於 1
VC 的編譯器對應的預定義宏是 _MSC_VER,用
#if_MSC_VER
即可判斷是否在使用 VC 的編譯器。_MSC_VER 的值同樣以某種方式對應於編譯器的版本,不過對應方式就復雜得多,再加上 VC 編譯器的版本號以不規則的方式增長,所以找各種版本測試 _MSC_VER 的值恐怕更可靠
其他編譯器也可能定義 __GNUC__ 或者 _MSC_VER 來表示自己兼容這些編譯器,例如 clang 也定義了 __GNUC__ 。不過既然它聲明了兼容性,除非測試確認了實際行為並不兼容,否則把它當成 GCC 也並無不可
㈥ 什麼是VC什麼是VC++什麼又是C++
C++是一種編程語言,我們知道電腦是由CPU,主板等硬體來運作的,但是這些之間運作是怎樣配合的呢,這就要靠人為的因素,是我們人來給他輸入指令的(指令跟軟體不同,軟體是實現某些功能的指令的集合),這些主令是那裡來的,這就是我們所說的編程語言了,每一種編程語言都自己的編譯器,編譯器是與硬體打交道的,我們在編譯器里寫程序,經過編譯器的處理後,生成與硬體打交道的機器指令,剛才提到編譯,這就是答你的VC是什麼,VC就是一個編譯器,是一個針對C++這種語言的編譯器,我們用C++在上面寫程序,然後再經過他內部復雜的運算,把我們的程序轉換成機器指令.