C 中的一些預編譯指令

2021-04-02 01:30:29 字數 1553 閱讀 6511

1、#define和#undef

用法:#define debug

#undef debug

#define告訴編譯器,我定義了乙個debug的乙個符號,他類似乙個變數,但是它沒有具體的值,可以將它看為乙個符號而已。#undef就是刪除這個符號的定義。如果符號debug沒定義過,則#undef不起作用,否則#define不起作用。二者都必須放在源**之前。二者的順序看**的順序:

#define debug

#undef  debug

這樣的話,debug是沒有定義的,如果二者換個順序,編譯器就認為debug被定義了

2、#if、#elif、#else、#endif

這個告訴編譯器進行編譯**的流程控制。考慮下面**:

#if debug

console.write("debug");

#elif release

console.write("realse");

#else

console.write("other");

#endif

以上**就是說如果定義了debug則輸出debug,定義了release,則輸出realse,否則輸出other。如果定義了debug和realse會怎麼樣呢?各位可以自己試一下。

3、#warning、#error

通過這兩個指定可以告訴編譯器,出乙個警告還是錯誤資訊。除了錯誤資訊以後,編譯將停止

參考下面的**

#if debug                                 ------〉該debug如果選中當前狀態為debug,則這個預設為#define

#warning 「現在是ddbug狀態」

#elif release                            ------〉如果選中release狀態的話,這個確沒有預設,不知道我試驗的對不對

#warning 「現在是realse狀態」

#else

#error「並清楚什麼狀態」

#endif

4、#region 和#endregion

這個兩個用來組成**塊

5、#line (這個指定的使用不太明白,參考msdn)

這個指令可以改變編譯器在警告和錯誤資訊中顯示的檔名和行號資訊,用#line default把行號恢復為預設的行號。

下面的示例說明如何報告與行號關聯的兩個警告。#line 200 指令迫使行號為 200(儘管預設值為 #7)。另一行 (#9) 作為預設 #line 指令 的結果跟在通常序列後。

// preprocessor_line.cs

public class myclass2

}示例 2

下面的示例說明偵錯程式如何忽略**中的隱藏行。執行此示例時,它將顯示三行文字。但是,當設定如示例所示的斷點並按 f10 鍵逐句通過**時,您將看到偵錯程式忽略了隱藏行。另請注意,即使在隱藏行上設定斷點,偵錯程式仍會忽略它。

// preprocessor_linehidden.cs

using system;

class myclass

}

C 預編譯指令

下面對c 中的預編譯指令進行介紹 1.define和 undef 用法 define debug undef debug define告訴編譯器,我定義了乙個debug的乙個符號,他類似乙個變數,但是它沒有具體的值,可以將它看為乙個符號而已。undef就是刪除這個符號的定義。如果符號debug沒定義...

c 的預編譯指令

c 預處理器指令是在編譯時呼叫的。預處理器指令 preprocessor directive 告訴c 編譯器要編譯哪些 並指出如何處理特定的錯誤和警告。c 預處理器指令還可以告訴c 編輯器有關 組織的資訊。1.定義符號和取消符號定義的預處理指令 define 和 undef 預處理指令都以 號開頭並...

C 中的預編譯指令介紹

用法 define告訴編譯器,我定義了乙個debug的乙個符號,他類似乙個變數,但是它沒有具體的值,可以將它看為乙個符號而已。undef就是刪除這個符號的定義。如果符號debug沒定義過,則 undef不起作用,否則 define不起作用。二者都必須放在源 之前。看 的順序 define debug...