閱讀269 返回首頁    go 微軟 go windows


預處理指令

預處理指令


1.#define 宏定義

普通——#define 宏名 字符串
#define  MY_INT int
#define MAX 10000
 
帶參數——#define 宏名(形參) 字符串
#define add(x,y)  x+y

2.條件編譯

在大規模的開發過程中,特別是跨平台和係統的軟件裏,條件編譯很重要。


#include <iostream>
using namespace std;#ifndef cc
#define cc
#define add(x,y) x+y
#define n 3 
#endif
int main( )
{
	cout<<2*add(n,4);//輸出為10,因為優先級 
	return 0;
}
#undef cc// 是在後麵取消以前定義的宏定義

3.assert ()宏

assert()是一個調試程序時經常使用的宏,在程序運行時它計算括號內的表達式,如果表達式為FALSE (0), 程序將報告錯誤,並終止執行。如果表達式不為0,則繼續執行後麵的語句。

#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
	char* a=NULL;
	char *b="hi";
	assert(b);//括號內表達式為真,什麼也不做,正常通過。 
	assert(a); 
	return 0;
}


運行截圖:

4.#pragma 預處理

pragma [p'ræɡmə] n. 編譯指示.

#pragma 編譯指示是機器或操作係統專有的,且對於每個編譯器都是不同的。


#pragma once
隻要在頭文件的最開始加入這條指令就能夠保證頭文件被編譯一次.
#pragma comment
常用的有#pragma comment (lib,"XXX.lib") 指定包含的庫文件。
#pragma pack(n)
結構體字節對齊。


最後更新:2017-04-03 12:56:23

  上一篇:go c++學習筆記之成員模板
  下一篇:go 線程同步之 CRITICAL_SECTION