这是在此之后的后续问题(请阅读我到底问题): 如何避免名称冲突从未来的#define用C? (或C ++)假设我使用#定义ROW和COL。 我然后使用ROW和COL定义ARRSIZE。 我声明一个静态数组像float myarray[ARRSIZE];
。 当我修改ROW和COL,静态数组的大小相应地改变。 但在我的特殊情况下,名称以我使用同一个文件结构类型的成员名称行和COL名称冲突。 有人告诉我使用的,而不是使用“#定义”,以避免confict常数变量。 我喜欢我的体改代码beloow(这是<br/>的一个实例)。
const int ROW = 100;
const int COL = 200;
const int ARRSIZE = ROW*COL;
float myarray[ARRSIZE];
Compling这给了我
error: expected '=', ',', ';', 'asm' or '__attribute__' before 'ARRSIZE'
在这里我定义ARRSIZE行。 当然,我可以用int ARRSIZE = ROW*COL;
在函数内部和动态地分配使用malloc函数内部的阵列。 但是,如果我想改变只有ROW和COL什么,不希望使用malloc? 当然也有这样的#define当它是没有问题的(除了名称冲突)。
#define ROW 100
#define COL 200
#define ARRSIZE ROW*COL
float myarray[ARRSIZE];
所以,问题:我想仅改变ROW,COL和所需的静态数组大小自动变更,但在同一时间,ROW和COL显示为相同的源文件中的一个类型(结构)的一个成员变量,并且我不能修复的类型的成员名称(假设它从由该系统提供的报头文件的)。 因此,在一个字,我想定义“像值的宏”未应用于成员函数/变量或全局变量。 什么是做在我的情况下,最好的做法是什么? 只是改变我的变量ROW和COL到一些特别的东西? 已经问过这个问题,我得到的印象,可能是唯一的解决办法.. :)