您可以使用X macro來實現您提到的內容。
只是這樣做:
#define LIST_OF_VARIABLES X(value1) X(value2) X(value3)
//Declaring the variables
#define X(name) int name;
LIST_OF_VARIABLES
#undef X
//Reading values into the variables
#define X(name) scanf("%i", &name);
LIST_OF_VARIABLES
#undef X
//Printing the values
#define X(name) printf("\n%i", name);
LIST_OF_VARIABLES
#undef X
首先,我們定義一個宏LIST_OF_VARIABLES
這將調用另一個宏X
。
我們保持LIST_OF_VARIABLES
的方式,因爲它會一遍又一遍地被使用。
接下來我們定義在LIST_OF_VARIABLES
正文中使用的宏X
。
這第二個宏是我們修改以適應我們需要的宏。我們首先用#undef
取消定義它,然後重新定義它#define
。
上面的代碼將被第一最終擴大LIST_OF_VARIABLES
宏之後,如下所示:
//Declaring the variables
#define X(name) int name;
X(value1) X(value2) X(value3)
#undef X
//Reading values into the variables
#define X(name) scanf("%i", &name);
X(value1) X(value2) X(value3)
#undef X
//Printing the values
#define X(name) printf("\n%i", name);
X(value1) X(value2) X(value3)
#undef X
然後X()
宏每次擴張之後,C pre-processor將最終得到以下的(這將被編譯器使用):
//Declaring the variables
int value1; int value2; int value3;
//Reading values into the variables
scanf("%i", &value1); scanf("%i", &value2); scanf("%i", &value3);
//Printing the values
printf("\n%i", value1); printf("\n%i", value2); printf("\n%i", value3);
這是你想要的輸出。
你有沒有在問之前閱讀過'scanf'? –
只需使用數組?我不確定我完全理解你的問題,但如果是關於動態變量的話,他們很少使用它。將數組用於變量由數字變化的變量,或對於變量以其他方式變化的Map來使用。 – Carcigenicate
數組和循環:'int val [3]; for(int j = 0; j <3; j ++)scanf(「%d」,val + j);' – pmg