首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C++中使用位移位但不使用加法或减法时出现"error: initializer element is not constant“

在C++中使用位移位但不使用加法或减法时出现"error: initializer element is not constant“
EN

Stack Overflow用户
提问于 2018-06-09 10:32:00
回答 1查看 519关注 0票数 0

我的嵌入式系统有两个内存区域。我创建了在这些区域之间切换的宏。我希望能够在编译时执行这些宏,但我为某些操作获取了error: initializer element is not constant,而不是其他操作。我已经把这个例子总结成这样。以下是全局变量:

代码语言:javascript
复制
__attribute__((section(".vmem_constant.data"))) unsigned int buf0[1024];
unsigned int buf_word_ptr = ((unsigned int)buf0)>>2; // doesn't work
unsigned int buf_word_ptr2 = ((unsigned int)buf0)/4; // doesn't work
unsigned int buf_word_ptr3 = ((((unsigned int)x)-0x40000)>>2); // original problem doesn't work
unsigned int works_1 = ((unsigned int)buf0) + 2; // works
unsigned int works_2 = buf0 + 16; // works

看起来我不能做除法或移位,但是加法或减法都可以。

我最初在尝试减去一个固定的偏移量,然后除以4的时候遇到了这个问题,也许有一种更简单的方法可以做到这一点?我正在使用(GCC) 7.2.0

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50770414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档