|
楼主 |
发表于 2018-6-6 10:10:52
|
显示全部楼层
在VS里可以通过,但是sizeof返回0,所以我现在想问有没有方法可以跨文件使用带sizeof的宏啊,或者说有没有其他的办法可以通过调用宏(跨文件)来求数组元素。
我在网上看了用地址差值的办法:- //example
- int a[]={1,2,3};
- #define size(x) ((char*)(&x+1) - (char*)(&x))
- printf("%d\n",size(a)/sizeof(int));
复制代码 但是这种方法也仅限于同一个文件中,一旦分开放置,&X就会报语法错误
工程需要把emwin的Dialog界面尽量简化,只保留emwin本身的代码,之前我定义的图片的数组 BITMAP *元素有几百个(&bm_xxx),
放在主程序文件里面代码很凌乱,所以现在要把它移出去
由于其中运用到了很多求大小的宏
- //
- XXX BITMAP* Array[]=
- {
- ......
- };
- #define xxx_NUM GUI_COUNTOF(Array)
复制代码 现在就出现了这种情况,sizeof直接失效了
直接用常数来define宏又感觉太不方便了
|
|