沒有躲過的坑 重定義關鍵字

2021-07-07 07:18:49 字數 440 閱讀 1136

從學習程式語言開始,我們就知道變數或是函式的命名不能使用系統的關鍵字。

但是有時候,你不得不這麼做。

比如mac、ios、android、windows共用乙個底層**,這樣為了使底層更加通用,有時候就會忽略某種語言的某個關鍵字。

也許關鍵字a對於win32就是乙個系統關鍵字,而a不是objective-c的關鍵字。

這個時候為了保證**的通用性,就需要重定義關鍵字,也就是所說的遮蔽掉系統關鍵字。

比如對於win32平台,需要遮蔽系統的某個關鍵字,你就可以這樣做:

#if platform == win32

#undef error

#endif

enum type ;

而上訴**的第一行,使用的是預編譯頭。這樣就很好的遮蔽了系統的關鍵字error,而error成為了你定義的列舉型別。

沒有躲過的坑

今天偶然發現的問題,就是自己寫的win32程式安裝在c盤program files x86 資料夾下就會產生異常,而安裝在其他資料夾,即使是d盤的program files x86 下,程式也可以完美執行。引起這個,肯定是許可權的問題。這個軟體執行時,需要讀寫資料庫,以及各種快取資料。這就是我給自己...

沒有躲過的坑

工作中是這樣的,a類中有乙個成員變數x,最開始宣告為私有 class a 現在需要在另乙個cpp中使用這個x,所以要把它變為共有並且靜態 class a 由此可見 靜態資料成員和普通資料成員一樣遵從public,protected,private訪問規則。此時,編譯,我們會得到乙個錯誤,原因就是x沒...

沒有躲過的坑 指標(記憶體洩露)

c 被人罵娘最多的就是指標。夜深人靜的時候,拿出幾個使用指標容易出現的坑兒。可能我的語言描述有些讓人費勁,盡量用 說話。通過指向類的null指標呼叫類的成員函式 試圖用乙個null指標呼叫類的成員函式,導致崩潰 include using namespace std class a void set...