我想弄清楚是否有可能做我想要完成的定義。我基本上試圖創建2組參數的定義(在下面的例子中,我使用了高度),我可以通過索引訪問。但是這個索引可能會改變,但參數仍然可以訪問。C預處理器定義/宏
#define INDEX_M 0
#define INDEX_Y 1
#define HEIGHT_MALE 60
#define HEIGHT_FEMALE 50
#define HEIGHT_##INDEX_M HEIGHT_MALE
#define HEIGHT_##INDEX_F HEIGHT_FEMALE
將被用作這樣的:
for (int i = 0; i < database_size; i++){
printf("Height requirement for person %d is: %d", i, HEIGHT_(person[i].gender));
}
通過這種方式,我們可以通過改變男性/女性的指數相匹配的數據庫的定義,仍然有這樣的代碼工作。
我試過使用宏,但我遇到的問題是它不會讓我在定義的前半部分使用##符號。
注意,包含兩個連續的下劃線的變量名是保留(編譯器的東西,我相信),因此使用無論如何,'__HEIGHT_'都有潛在的危險。 –