宏开关与数组固定长度问题
#if define (A==1)
if (Test1_OK)
Data[count++]=A;
#endif
#if define (B==1)
if (Test2_OK)
Data[count++]=B;
#endif
#if define (C==1)
if (Test3_OK)
Data[count++]=C;
#endif
..
共100个,
由于宏开关我只开了40个,所以Data数组的长度设置为20.如果Testok的话,就保存到DataBuffer中,是动态保存的。Test3不一定保存在Data[2]中。因为只有Test的if条件满足。
我现在想把数组Data变成固定的Test3_OK一定是保存到Data[固定的位置]。当然我有100个宏,可以设置Data[0],到Data[99]就是固定的了,但是这样的全局变量要占用ram空间100个字节,而我只开了40个宏。所以Data数组的长度我只会设置为40.但是这样就编译不通过了。还要手动修改,有什么好办法吗?如何修改代码。只要宏开关开40个,Data数组也是40个的长度。不用再修改其他代码?高手指教!
[解决办法]
数组大小的定义需要编译器常数的。。。也就是立即数。。。你这明显编译就不通过么
[解决办法]
如果动态变化,何不动态申请:malloc