欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++中預(yù)定義宏的實(shí)現(xiàn)

 更新時(shí)間:2025年06月27日 10:29:58   作者:pumpkin84514  
C++中有許多預(yù)定義宏,這些宏在程序編譯時(shí)由編譯器自動(dòng)定義,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

C++中有許多預(yù)定義宏,這些宏在程序編譯時(shí)由編譯器自動(dòng)定義,并可以在代碼中使用。預(yù)定義宏通常用于調(diào)試、條件編譯、文件信息、平臺(tái)特定配置等方面。以下是一些常見的預(yù)定義宏及其具體使用方法和示例。

1. __FILE__

說明:__FILE__ 是一個(gè)字符串宏,表示當(dāng)前源代碼文件的名稱(包括路徑)。

使用方法:通常用于調(diào)試或日志記錄,以顯示當(dāng)前文件的名稱。

示例:

#include <iostream>

int main() {
    std::cout << "This code is in file: " << __FILE__ << std::endl;
    return 0;
}

輸出:

This code is in file: /path/to/your/sourcefile.cpp

2. __LINE__

說明:__LINE__ 是一個(gè)整數(shù)宏,表示當(dāng)前源代碼的行號(hào)。

使用方法:常用于調(diào)試或錯(cuò)誤報(bào)告,幫助開發(fā)者快速定位問題發(fā)生的源代碼行號(hào)。

示例:

#include <iostream>

int main() {
    std::cout << "This is line: " << __LINE__ << std::endl;
    return 0;
}

輸出:

This is line: 6

3. __DATE__

說明:__DATE__ 是一個(gè)字符串宏,表示編譯源代碼時(shí)的日期(格式:Mmm dd yyyy,例如:Sep 3 2024)。

使用方法:可以用于生成代碼的編譯日期,常見于版本控制和構(gòu)建信息。

示例:

#include <iostream>

int main() {
    std::cout << "Compiled on: " << __DATE__ << std::endl;
    return 0;
}

輸出:

Compiled on: Sep  3 2024

4. __TIME__

說明:__TIME__ 是一個(gè)字符串宏,表示編譯源代碼時(shí)的時(shí)間(格式:hh:mm:ss,例如:14:30:15)。

使用方法:用于記錄代碼編譯的時(shí)間,通常在日志或調(diào)試輸出中使用。

示例:

#include <iostream>

int main() {
    std::cout << "Compiled at: " << __TIME__ << std::endl;
    return 0;
}

輸出:

Compiled at: 14:30:15

5. __STDC__

說明:__STDC__ 是一個(gè)宏,當(dāng)代碼是嚴(yán)格符合標(biāo)準(zhǔn)的 C 語(yǔ)言程序時(shí)(即不使用任何擴(kuò)展),這個(gè)宏會(huì)被定義。對(duì)于 C++ 編譯器,它表示是否遵循 C 標(biāo)準(zhǔn)。

使用方法:主要用于條件編譯,確定是否使用標(biāo)準(zhǔn) C 語(yǔ)言的一些特性。

示例:

#include <iostream>

int main() {
#ifdef __STDC__
    std::cout << "The program is compiled with a standard C compiler!" << std::endl;
#else
    std::cout << "The program is compiled with a non-standard compiler!" << std::endl;
#endif
    return 0;
}

輸出:

The program is compiled with a standard C compiler!

6. __cplusplus

說明:__cplusplus 是一個(gè)宏,用于表示當(dāng)前編譯環(huán)境支持的 C++ 標(biāo)準(zhǔn)版本。它的值是一個(gè)整數(shù),代表 C++ 標(biāo)準(zhǔn)的年份和修訂版本。

常見值:

  • 199711L:C++98。
  • 201103L:C++11。
  • 201402L:C++14。
  • 201703L:C++17。
  • 202002L:C++20。

使用方法:通常用于判斷當(dāng)前編譯環(huán)境使用的 C++ 標(biāo)準(zhǔn)版本。

示例:

#include <iostream>

int main() {
#if __cplusplus == 199711L
    std::cout << "C++98 Standard" << std::endl;
#elif __cplusplus == 201103L
    std::cout << "C++11 Standard" << std::endl;
#elif __cplusplus == 201402L
    std::cout << "C++14 Standard" << std::endl;
#elif __cplusplus == 201703L
    std::cout << "C++17 Standard" << std::endl;
#elif __cplusplus == 202002L
    std::cout << "C++20 Standard" << std::endl;
#else
    std::cout << "Unknown C++ Standard" << std::endl;
#endif
    return 0;
}

輸出:

C++17 Standard

7. __GNUC__, __GNUG__

說明:__GNUC__ 和 __GNUG__ 是 GNU 編譯器(GCC)所定義的宏。__GNUC__ 表示 GCC 的主版本號(hào),__GNUG__ 用于判斷是否是 GNU C++ 編譯器。

使用方法:通常用于平臺(tái)特定的編譯選項(xiàng)或特性,以判斷是否在 GCC 編譯器下編譯代碼。

示例:

#include &lt;iostream&gt;

int main() {
#ifdef __GNUC__
    std::cout &lt;&lt; "Compiled with GCC, version " &lt;&lt; __GNUC__ &lt;&lt; "." &lt;&lt; __GNUC_MINOR__ &lt;&lt; std::endl;
#endif
    return 0;
}

輸出:

Compiled with GCC, version 10.2

8. __declspec (Microsoft特定)

說明:__declspec 是 Microsoft 編譯器特有的一個(gè)關(guān)鍵字,用于指定函數(shù)、變量或類型的屬性。例如,用于聲明 DLL 導(dǎo)入或?qū)С龇?hào)。

使用方法:在 Windows 編程中常用于定義函數(shù)的導(dǎo)入導(dǎo)出。

示例:

#include <iostream>

__declspec(dllexport) void hello() {
    std::cout << "Hello, world!" << std::endl;
}

int main() {
    hello();
    return 0;
}

說明:

  • __declspec(dllexport) 是 Microsoft 的擴(kuò)展,用來聲明函數(shù)為 DLL 的導(dǎo)出函數(shù)。

9. __VA_ARGS__

說明:__VA_ARGS__ 是用于宏定義中的可變參數(shù)的宏,它代表宏調(diào)用時(shí)傳遞給宏的所有額外參數(shù)。

使用方法:常用于實(shí)現(xiàn)日志記錄、調(diào)試信息等功能,可以支持可變參數(shù)宏。

示例:

#include <iostream>

#define LOG(msg, ...) std::cout << "LOG: " << msg << __VA_ARGS__ << std::endl

int main() {
    LOG("Error: ", "File not found\n");
    return 0;
}

輸出:

LOG: Error: File not found

10. #ifdef / #ifndef / #endif

這些并非直接的預(yù)定義宏,但它們與預(yù)定義宏結(jié)合使用來控制條件編譯:

示例:

#include <iostream>

#define DEBUG

int main() {
#ifdef DEBUG
    std::cout << "Debug mode is enabled." << std::endl;
#else
    std::cout << "Debug mode is disabled." << std::endl;
#endif
    return 0;
}

輸出:

Debug mode is enabled.

總結(jié)

  • 這些預(yù)定義宏提供了關(guān)于文件、日期、時(shí)間、編譯器、標(biāo)準(zhǔn)版本等的信息,并常用于調(diào)試、日志記錄和條件編譯。
  • 它們?cè)诳缙脚_(tái)開發(fā)、庫(kù)開發(fā)和調(diào)試中尤為重要,幫助開發(fā)者在不同環(huán)境下編寫更具可移植性的代碼。

到此這篇關(guān)于C++中預(yù)定義宏的文章就介紹到這了,更多相關(guān)C++ 預(yù)定義宏內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

您可能感興趣的文章:

相關(guān)文章

  • VC中刪除類的兩種操作方法

    VC中刪除類的兩種操作方法

    這篇文章主要介紹了VC中刪除類的兩種操作方法,較為詳細(xì)的描述了在VC中實(shí)現(xiàn)刪除類的具體步驟,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-05-05
  • C語(yǔ)言實(shí)現(xiàn)單鏈表的基本操作分享

    C語(yǔ)言實(shí)現(xiàn)單鏈表的基本操作分享

    單鏈表是一種鏈?zhǔn)酱嫒〉臄?shù)據(jù)結(jié)構(gòu),用一組地址任意的存儲(chǔ)單元存放線性表中的數(shù)據(jù)元素。本文將為大家介紹C語(yǔ)言中單鏈表的基本操作,需要的可以參考一下
    2022-10-10
  • C++常量詳解二(常量形參,常量返回值,常量成員函數(shù))

    C++常量詳解二(常量形參,常量返回值,常量成員函數(shù))

    這篇文章主要介紹了C++常量詳解二(常量形參,常量返回值,常量成員函數(shù)),需要的朋友可以參考下
    2017-06-06
  • C語(yǔ)言實(shí)現(xiàn)彈跳小球項(xiàng)目

    C語(yǔ)言實(shí)現(xiàn)彈跳小球項(xiàng)目

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)彈跳小球項(xiàng)目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • c++中關(guān)于int、long、long?long等取值范圍

    c++中關(guān)于int、long、long?long等取值范圍

    這篇文章主要介紹了c++中關(guān)于int、long、long?long等取值范圍,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • C++?Boost?ProgramOptions超詳細(xì)講解

    C++?Boost?ProgramOptions超詳細(xì)講解

    Boost是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一,是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱
    2022-11-11
  • C++ vector如何動(dòng)態(tài)申請(qǐng)內(nèi)存的元素

    C++ vector如何動(dòng)態(tài)申請(qǐng)內(nèi)存的元素

    vector是一種動(dòng)態(tài)數(shù)組,本文主要介紹了C++ vector如何動(dòng)態(tài)申請(qǐng)內(nèi)存的元素,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C++表達(dá)式new與delete知識(shí)詳解

    C++表達(dá)式new與delete知識(shí)詳解

    這篇文章主要為大家詳細(xì)介紹了C++表達(dá)式new與delete知識(shí)點(diǎn),學(xué)習(xí)如何動(dòng)態(tài)創(chuàng)建對(duì)象,動(dòng)態(tài)創(chuàng)建的對(duì)象與一般對(duì)象的區(qū)別,動(dòng)態(tài)創(chuàng)建的對(duì)象的初始化以及釋放動(dòng)態(tài)分配的內(nèi)存等知識(shí)點(diǎn),感興趣的朋友可以參考一下
    2016-05-05
  • 詳解C++中的isunordered函數(shù)

    詳解C++中的isunordered函數(shù)

    這篇文章主要介紹了C++中的isunordered函數(shù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • C?語(yǔ)言實(shí)現(xiàn)猜數(shù)字小游戲完整示例代碼

    C?語(yǔ)言實(shí)現(xiàn)猜數(shù)字小游戲完整示例代碼

    這篇文章主要介紹了如何使用C語(yǔ)言生成1到100之間的隨機(jī)數(shù),并提供了一個(gè)簡(jiǎn)單的猜數(shù)字游戲的實(shí)現(xiàn)代碼,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03

最新評(píng)論