我太難/菜了!!!
extern
extern表示是外部函式或外部變數,比如:
1、extern void add(int x,inty);表示該函式主體不在當前模組中,在另乙個模組中(檔案)
2、extern int total;表示該變數在另乙個模組總定義過。
一般都把一些經常用到的列舉和變數之類的寫在.h標頭檔案中。這樣要引用時直接include "頭檔名"就可以了呼叫裡面所有的列舉和變數了。在大型專案中,引用別的.c檔案中的函式則只能用extern,因為.c檔案是不能 include的。所以想引用別的.c檔案中的函式和全域性變數、列舉等等的就只能用extern。
extern在這裡起的作用是告訴編譯器,你這個print()已經在某個.cpp中已經定義了,這裡只不過是宣告一下有這個東西,然後拿來用一下。定義只能出現一次,宣告卻可出現多次,也就是說extern宣告可在多個檔案中用(包括.h)
#ifndef
#ifndef是"if not defined"的簡寫,是巨集定義的一種,它是可以根據是否已經定義了乙個變數來進行分支選擇,一般用於除錯等。實際上確切的說這應該是預處理功能中三種(巨集定義,檔案包含和條件編譯)中的第三種——條件編譯。
#ifndef x
//先測試x是否被巨集定義過
#define x
程式段1
//如果x沒有被巨集定義過,定義x,並編譯程式段 1
#else
程式段2
//如果x已經定義過了則編譯程式段2的語句,「忽視」程式段 1
#endif
//終止if
#undef
#define定義預處理器識別符號,將保持已定義狀態且在作用域內,直到程式結束或者使用#undef 指令取消定義
#ifdef和#endif
#ifdef是一句電腦程式語句。可以用它區隔一些與特定標頭檔案、程式庫和其他檔案版本有關的**。可翻譯為:如果巨集定義了語句1則執行程式2。用#endif結尾。
cerr
cerr 乙個ostream物件,關聯到標準錯誤,通常寫入到與標準輸出相同的裝置。預設情況下,寫到cerr的資料是不緩衝的。cerr通常用於輸出錯誤資訊與其他不屬於正常邏輯的輸出內容。
assert
assert的作用是先計算表示式 expression ,如果其值為假(即為0),那麼它先向stderr列印一條出錯資訊,然後通過呼叫 abort 來終止程式執行。請看下面的程式清單badptr.c:
指標作為函式引數傳遞
參考:函式引數傳遞的只能是數值,所以當指標作為函式引數傳遞時,傳遞的是指標的值,而不是位址。如果要改變指標的值,用雙重指標。
異常處理
參考://不是很會//好的,不會
4 1學習記錄
記錄下今天看的兩篇 d patch gan 提到,雖然在影象生成方面,使用l1或者l2 loss會導致生成的影象產生模糊 fail to encourage high frequency crispness 但是可以大多數情況下它們可以準確地捕捉低頻資訊。因此,d限制為僅對影象的高頻結構建模,即僅關...
JAVA API 學習疑問記錄
string類 為什麼要設計contentequals?明明有equals這個方法 網上資料 string的這2個方法都是自己實現的,contentequals就是用來比較內容相同就行了,charsequence,stringbuffer 都可以進行比較,只要內部char 相同排序相同就算一樣。eq...
4 1c 學習記錄之傳遞物件
傳遞物件 按值來傳遞物件 預設呼叫複製建構函式 class a a func a one int main a func a one int main a func a one 假如我們將函式宣告為a func a one 那麼由於它返回的是物件而不是該物件的記憶體位址,因此在返回該物件時仍然需要呼...