嗨,我正在學習 C。還有一個任務,我必須使用相同的識別符號宣告一個字符陣列和一個數字陣列。對于數字陣列,確定每個數字的重復次數。對于一個符號陣列,用于查找給定字符代碼的字符的位置和值。而且我必須使用條件編譯。
所以我必須做這樣的事情(?):
#define SIZE 100
char symbols[SIZE];
int numbers[SIZE];
或者我必須做類似的事情(這可能是錯誤的,但我并不真正理解任務):
#define SIZE 100
char arr[SIZE];
int arr[SIZE];
uj5u.com熱心網友回復:
一個識別符號是對某事物的名稱。所以你在被問到的問題是正確的:
char arr1[10]; // array of chars identifier "arr1"
int arr1[10]; // array of ints identifier "arr1"
但是正如 Eugene 提到的,你不能在 C 中這樣做,因為你會得到一個錯誤,因為你可以讓一個識別符號只標識一種型別的變數。其他語言則不同。一些替換物件,一些單獨跟蹤它們。
對于條件編譯你需要#define/ #ifdef/#endif
所以,例如
#define ARR_IS_INT
#ifdef ARR_IS_INT
// give only int def to compiler
int arr1[10];
#else
// give only char def to compiler
char arr1[10];
#endif
像上面這樣的條件編譯陳述句是在特定情況下向編譯器隱藏代碼的便捷方法。假設您有一些舊代碼仍然想要支持,但是您有新的東西不能與舊的一起使用。您可以將兩者都保留在代碼庫中并在它們之間進行選擇。有多種方法可以將這些定義給前處理器。本質上,您的代碼由前處理器讀取,并且所有#defines/ #ifdefs 都替換為編譯器將讀取的代碼。這個前處理器通過您的代碼是隱藏的,但您通常可以強制編譯器使用編譯器選項將其吐出,以便您可以破譯正在發生的事情。
希望這是有幫助的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/355583.html
標籤:数组 C 视觉工作室 视觉工作室-2019
上一篇:針對null[]的型別保護
