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

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

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

什么是預(yù)宏定義

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

預(yù)定義宏特征

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

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

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

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

    std::cout <<"當前日期:"<<__DATE__ << std::endl; // 當前日期:Apr 16 2023

    std::cout <<"當前時間:"<<__TIME__ << std::endl; // 當前時間:10:18:11
	
    std::cout <<"當前函數(shù):"<<__FUNCTION__ << std::endl; // 當前函數(shù):main
	
    //__STDC__:判斷當前的編譯器是否為標準C編譯器,若是則返回值1
    std::cout <<"當前編譯器:"<<__STDC__ << std::endl; // 當前編譯器: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默認的內(nèi)置宏定義

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

指令說明

  • -E 預(yù)處理后即停止,不進行編譯。預(yù)處理后的代碼送往標準輸出。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)中獲取當前文件目錄的方法
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 << "當前工作目錄為: " << 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ù)的使用進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C語言運算符的重載詳解

    C語言運算符的重載詳解

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

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

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

    C++中allocator類使用示例

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

    VC++時鐘函數(shù)

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

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

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

    C++11系列學習之類型推導

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

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

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

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

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

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

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

最新評論

子洲县| 河间市| 当阳市| 南昌县| 寿光市| 南投市| 安远县| 德令哈市| 札达县| 湘乡市| 新蔡县| 通州市| 石景山区| 锦州市| 衡南县| 木兰县| 金沙县| 茶陵县| 贞丰县| 道孚县| 天祝| 嘉兴市| 汉中市| 安宁市| 苍南县| 长海县| 华安县| 睢宁县| 萍乡市| 当涂县| 铁岭市| 科技| 长沙县| 曲阜市| 安泽县| 体育| 崇左市| 蒲江县| 习水县| 建平县| 南投市|