[英]declaring variable length array as macro
可以這樣做:
#define VARIABLE_LENGTH_CHAR_ARRAY(name, size) \
int temp_array_size_macro_index = size; \
char "#name"[temp_array_size_macro_index];
主要用途如下:
main(){
VARIABLE_LENGTH_CHAR_ARRAY(local_char_array, 16);
}
這會違背編碼風格還是會遇到宏問題?
我知道您需要小心使用變量名!
如果我是對的,你想要這樣的東西:
#define VARIABLE_LENGTH_CHAR_ARRAY(name, size) \
const int size_of_##name = size; \
char name[size_of_##name]
int main()
{
VARIABLE_LENGTH_CHAR_ARRAY(local_char_array, 16);
}
現在,用於大小的變量(現在為const )的名稱取決於數組本身的名稱,該名稱使具有同音異義詞的可能性最小化
由gcc -E
產生的代碼的擴展給出:
int main()
{
const int size_of_local_char_array = 16; char local_char_array[size_of_local_char_array];
}
但是這樣做很奇怪 :
__J__ I
認為這無助於使程序可讀 size_of_local_char_array
但如果您/某人搜索其定義,則將找不到 {}
,這很危險,因為這不直觀。 如您在代碼中所見,您添加了一個無用的';' 使用宏后,最后一個';' 在宏定義中已經存在
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.