请教各位: 我写了一个程序,在redhat9.0环境下gcc编译通过,程序能正常运行。但是准备移植到arm目标板上,使用arm-linux-gcc-3.4.1编译时,程序编译出错!
出错的代码如下:(大致的意思是计算结构体中一个成员相对于首地址的位置偏移)
for ( int i=0; i
offset = offsetof(APP_DATA, dataInfo[i]);
//其他处理
}
编译错误信息:
ParaShmOper.cpp: In member function `int CParaShmOper::putShmPara(int, char*)':
ParaShmOper.cpp:266: error: `i' cannot appear in a constant-expression
另外,我发现,其他地方有使用offsetof(APP_DATA, dataInfo[0])计算偏移,但是没有报错。
那位兄弟知道原因,请指导一下吧!谢谢!
解决办法:使用一个静态数组初始化,其中offsetof带入的参数为0,1,2....