国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

c++ 編程 幾個有用的宏詳解

2020-05-23 13:54:52
字體:
來源:轉載
供稿:網友

1. 打印錯誤信息

如果程序的執行必須要求某個宏被定義,在檢查到宏沒有被定義是可以使用#error,#warning打印錯誤(警告)信息,如:

#ifndef __unix__#error "This section will only work on UNIX systems"#endif

只有__unix__宏被定義,程序才能被正常編譯。

2. 方便調試

__FILE, __LINE, __FUNCTION是由編譯器預定義的宏,其分別代表當前代碼所在的文件名,行號,以及函數名。

可以在代碼中加入如下語句來跟蹤代碼的執行情況:

if(err) {printf("%s(%d)-%s/n",__FILE__,__LINE__,__FUNCTION__);} 

3. C/C++的混合編程

函數int foo(int a, int b);

在C語言的該函數在編譯器編譯后在庫中的名字為_foo,而C++中該函數被編譯后在庫中的名字為_foo_int_int(為實現函數重載所做的改變)。如果C++中需要使用C編譯后的庫函數,則會提示找不到函數,因為符號名不匹配。C++中使用extern “C”解決該問題,說明要引用的函數是由C編譯的,應該按照C的命名方式去查找符號。

如果foo是C編譯的庫,如果要在C++中使用foo,需要加如下聲明,其中__cplusplus是c++編譯器預定義的宏,說明該文件是被C++編譯器編譯,此時引用C的庫函數,就需要加extern “C”。

#ifdef __cplusplusextern “C” {#endif   extern int foo(int a, int b); #ifdef __cplusplus}#endif 

4. 可變參數

#define debug(format, args...) fprintf (stderr, format, args)
#define debug(format, ...) fprintf (stderr, format, __VA_ARGS__)

或者#define debug(format, ...) fprintf (stderr, format, ## __VA_ARGS__)

前兩者存在多余逗號問題,第三個宏使用##去掉可能多余的逗號。

以上就是小編為大家帶來的c++ 編程 幾個有用的宏詳解全部內容了,希望大家多多支持VEVB武林網~


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 勃利县| 铜陵市| 拜城县| 禹城市| 石楼县| 耿马| 体育| 连江县| 邹城市| 和林格尔县| 鹤峰县| 嫩江县| 蓬安县| 丰宁| 清涧县| 保定市| 山阴县| 三门县| 济阳县| 赤城县| 宜川县| 武冈市| 砀山县| 兴和县| 安顺市| 通化市| 黔江区| 江北区| 册亨县| 镇坪县| 特克斯县| 涟水县| 元阳县| 伊吾县| 囊谦县| 花垣县| 襄垣县| 永泰县| 德兴市| 普兰县| 板桥市|