亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

c++ 編程 幾個(gè)有用的宏詳解

 更新時(shí)間:2016年12月31日 10:18:41   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇c++ 編程 幾個(gè)有用的宏詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

1. 打印錯(cuò)誤信息

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

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

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

2. 方便調(diào)試

__FILE, __LINE, __FUNCTION是由編譯器預(yù)定義的宏,其分別代表當(dāng)前代碼所在的文件名,行號(hào),以及函數(shù)名。

可以在代碼中加入如下語(yǔ)句來(lái)跟蹤代碼的執(zhí)行情況:

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

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

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

在C語(yǔ)言的該函數(shù)在編譯器編譯后在庫(kù)中的名字為_(kāi)foo,而C++中該函數(shù)被編譯后在庫(kù)中的名字為_(kāi)foo_int_int(為實(shí)現(xiàn)函數(shù)重載所做的改變)。如果C++中需要使用C編譯后的庫(kù)函數(shù),則會(huì)提示找不到函數(shù),因?yàn)榉?hào)名不匹配。C++中使用extern “C”解決該問(wèn)題,說(shuō)明要引用的函數(shù)是由C編譯的,應(yīng)該按照C的命名方式去查找符號(hào)。

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

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

4. 可變參數(shù)

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

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

前兩者存在多余逗號(hào)問(wèn)題,第三個(gè)宏使用##去掉可能多余的逗號(hào)。

以上就是小編為大家?guī)?lái)的c++ 編程 幾個(gè)有用的宏詳解全部?jī)?nèi)容了,希望大家多多支持腳本之家~

相關(guān)文章

最新評(píng)論