最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

查看C++ 預(yù)定義宏的方法

 更新時間:2026年05月21日 09:08:36   作者:java葉新東  
本文主要介紹了查看C++ 預(yù)定義宏的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

什么是預(yù)宏定義

預(yù)定義宏是C語言中標(biāo)準(zhǔn)編譯器預(yù)先定義的宏,當(dāng)我們編寫跨平臺程序時,有時候需要知道對應(yīng)平臺的工具鏈GCC預(yù)定義宏,用來判斷一些平臺特性

預(yù)定義宏特征

預(yù)定義宏有兩個特征:

  1. 無需提供它們的定義,就可以直接使用。
  2. 預(yù)定義宏沒有參數(shù),且不可被重定義。

預(yù)定義的宏一般分為兩類:標(biāo)準(zhǔn)預(yù)定義宏、編譯器預(yù)定義宏。
常用的幾個標(biāo)準(zhǔn)預(yù)定義宏有以下幾個:

    std::cout <<"當(dāng)前行號:"<<__LINE__ << std::endl; // 當(dāng)前行號:15
	
    std::cout <<"當(dāng)前文件:"<<__FILE__ << std::endl; // 當(dāng)前文件:/Users/yexd/Documents/project_cpp/cpp_learn/lesson_26__LINE__.cpp

    std::cout <<"當(dāng)前日期:"<<__DATE__ << std::endl; // 當(dāng)前日期:Apr 16 2023

    std::cout <<"當(dāng)前時間:"<<__TIME__ << std::endl; // 當(dāng)前時間:10:18:11
	
    std::cout <<"當(dāng)前函數(shù):"<<__FUNCTION__ << std::endl; // 當(dāng)前函數(shù):main
	
    //__STDC__:判斷當(dāng)前的編譯器是否為標(biāo)準(zhǔn)C編譯器,若是則返回值1
    std::cout <<"當(dāng)前編譯器:"<<__STDC__ << std::endl; // 當(dāng)前編譯器:1

常見操作系統(tǒng)預(yù)定義宏

OSMacroDescription
UNIX Environment __unix__
UNIX Environment__unix
Linux kernellinux
GNU/Linuxgnu_linux
Mac OS X & iOSAPPLE蘋果系統(tǒng)
AndroidANDROID安卓系統(tǒng)
Windows_WIN32Defined for both 32-bit and 64-bit environments
Windows_WIN64Defined for 64-bit environments

gcc 查看gcc默認(rèn)的內(nèi)置宏定義

gcc -dM -E - < /dev/null
或
cpp -dM /dev/null

指令說明

  • -E 預(yù)處理后即停止,不進(jìn)行編譯。預(yù)處理后的代碼送往標(biāo)準(zhǔn)輸出。GCC忽略任何不需要預(yù)處理的輸入文件。
  • -dM 告訴預(yù)處理器輸出有效的宏定義列表(預(yù)處理結(jié)束時仍然有效的宏定義)。該選項需結(jié)合`-E’選項使用。

結(jié)果如下

yexd@yexddeMacBook-Pro lesson_27_namespace % gcc -dM -E - < /dev/null
#define _LP64 1
#define __APPLE_CC__ 6000
#define __APPLE__ 1
#define __ATOMIC_ACQUIRE 2
#define __ATOMIC_ACQ_REL 4
#define __ATOMIC_CONSUME 1
......

clang 查看所有預(yù)定義宏

clang -dM -E -x c /dev/null

結(jié)果如下

yexd@yexddeMacBook-Pro lesson_27_namespace % clang -dM -E -x c /dev/null
#define _LP64 1
#define __APPLE_CC__ 6000
#define __APPLE__ 1
#define __ATOMIC_ACQUIRE 2
#define __ATOMIC_ACQ_REL 4
#define __ATOMIC_CONSUME 1
......

查看用戶自行設(shè)定的宏定義

gcc -dM -E helloworld.c

預(yù)宏定義在c++代碼中的應(yīng)用

#include "iostream"
using namespace std;

#if defined(_MSC_VER) // 如果是windows系統(tǒng),引入direct.h,將 _getcwd 宏定義為 GetCurrentDir
    #include <direct.h>
    #define GetCurrentDir _getcwd
#elif defined(__unix__) || defined(__APPLE__) // 如果是unix系統(tǒng)或者蘋果系統(tǒng),引入unistd.h ,將 getcwd 宏定義為 GetCurrentDir
    #include <unistd.h>
    #define GetCurrentDir getcwd
#else
// 啥也不干
#endif

// 操作系統(tǒng)兼容,在不同的操作系統(tǒng)中獲取當(dāng)前文件目錄的方法
std::string get_current_directory()
{
    char buff[250];
    // 如果是windows系統(tǒng),就用 _getcwd,如果是mac系統(tǒng)就用 getcwd
    GetCurrentDir(buff, 250);
    string current_working_directory(buff);
    return current_working_directory;
}

int main(int argc, char* argv[])
{
    std::cout << "當(dāng)前工作目錄為: " << get_current_directory() << endl;
    return 0;
}

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

您可能感興趣的文章:

相關(guān)文章

  • 深入探討C++父類子類中虛函數(shù)的應(yīng)用

    深入探討C++父類子類中虛函數(shù)的應(yīng)用

    本篇文章是對C++父類子類中虛函數(shù)的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C語言運算符的重載詳解

    C語言運算符的重載詳解

    這篇文章主要為大家詳細(xì)介紹C語言運算符的重載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C++中的循環(huán)引用

    C++中的循環(huán)引用

    雖然C++11引入了智能指針的,但是開發(fā)人員在與內(nèi)存的斗爭問題上并沒有解放,如果我門實用不當(dāng)仍然有內(nèi)存泄漏問題,其中智能指針的循環(huán)引用缺陷是最大的問題。下面通過實例代碼給大家介紹c++中的循環(huán)引用,一起看看吧
    2017-09-09
  • C++中allocator類使用示例

    C++中allocator類使用示例

    大家好,本篇文章主要講的是C++中allocator類使用示例,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • VC++時鐘函數(shù)

    VC++時鐘函數(shù)

    VC中提供了很多關(guān)于時間操作的函數(shù),編寫程序時我們可以跟據(jù)定時的不同精度要求選擇不同的時間函數(shù)來完成定時和計時操作
    2015-06-06
  • C++編程中私有和保護(hù)以及公有的類成員訪問控制

    C++編程中私有和保護(hù)以及公有的類成員訪問控制

    這篇文章主要介紹了C++編程中私有和保護(hù)以及公有的類成員訪問控制,即private和protected以及public關(guān)鍵字的相關(guān)作用和用法,需要的朋友可以參考下
    2016-01-01
  • C++11系列學(xué)習(xí)之類型推導(dǎo)

    C++11系列學(xué)習(xí)之類型推導(dǎo)

    這篇文章主要介紹了C++11系列學(xué)習(xí)之類型推導(dǎo),文章基于C++的相關(guān)資料展開對主題的詳細(xì)內(nèi)容介紹,具有一定的參考價值需要的小伙伴可參考一下
    2022-04-04
  • VSCode配置C/C++語言環(huán)境(2023最新版)

    VSCode配置C/C++語言環(huán)境(2023最新版)

    這篇文章主要介紹了VSCode配置C/C++語言環(huán)境(2023最新版)的全過程,本文給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • 詳解C語言fscanf函數(shù)讀取文件教程及源碼

    詳解C語言fscanf函數(shù)讀取文件教程及源碼

    這篇文章主要為大家介紹了詳解C語言算法fscanf讀取文件示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • C語言讀取BMP圖像數(shù)據(jù)的源碼

    C語言讀取BMP圖像數(shù)據(jù)的源碼

    這篇文章主要介紹了C語言讀取BMP圖像數(shù)據(jù)的源碼,需要的朋友可以參考下
    2013-03-03

最新評論

乌拉特前旗| 页游| 望谟县| 永兴县| 合山市| 遂川县| 沂源县| 南宁市| 中西区| 景泰县| 班戈县| 七台河市| 屯昌县| 土默特左旗| 乐平市| 榆林市| 新昌县| 永兴县| 平武县| 岢岚县| 集安市| 姜堰市| 凌海市| 历史| 聊城市| 图木舒克市| 东阿县| 昌图县| 礼泉县| 重庆市| 邹城市| 天台县| 会宁县| 奉新县| 银川市| 肥东县| 巧家县| 如皋市| 汝城县| 天峨县| 凤阳县|