首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

宏开关与数组固定长度有关问题

2012-08-17 
宏开关与数组固定长度问题#if define (A1)if (Test1_OK)Data[count++]A#endif#if define (B1)if (Te

宏开关与数组固定长度问题
#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

热点排行
Bad Request.