如何在编译阶段确定大小端

zy1306 2015-05-26 09:55:25
如题,我们知道,gcc用-EL和-EB能控制大小端编译,但是我们的代码如何知道这个参数?当然了,对于在编译阶段就能确定的条件分支语句,编译器通常都会优化,省掉条件判断而直接走为真的分支。但是有些场合却不适用,比如对于结构体的定义,我不想采用定义两个名字的结构体,然后在代码里控制使用哪个。我只想用一个结构体名字,用条件编译来决定结构体的定义。就像用__LP64__和__LP32__来判断字长一样
...全文
1430 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly 100% 2015-06-16
  • 打赏
  • 举报
回复
-mbig-endian
zy1306 2015-06-15
  • 打赏
  • 举报
回复
引用 6 楼 cambest 的回复:
__BIG_ENDIAN/__LITTLE_ENDIAN, gcc编译器内建.
我的gcc没有内置这两个宏 gcc 版本 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
cambest 2015-06-08
  • 打赏
  • 举报
回复
__BIG_ENDIAN/__LITTLE_ENDIAN, gcc编译器内建.
zy1306 2015-06-08
  • 打赏
  • 举报
回复
对的,但我想让BIG_ENDIAN由编译器自动给出,或者编译时给的参数给出
nswcfd 2015-06-05
  • 打赏
  • 举报
回复
楼主是想要这样的定义吗?
struct XXX {
#if defined BIG_ENDIAN
	char a, b, c, d;
#elif defined LITTLE_ENDIAN
	char d, c, b, a;
#else
	#error DEFINE BIG_ENDIAN OR LITTLE_ENDIAN
};
为啥会有这样的需求?
zy1306 2015-06-04
  • 打赏
  • 举报
回复
没人能解决吗?
LouisScola 2015-05-27
  • 打赏
  • 举报
回复
涉及到存储和传输时就必须考虑到大小端,特别是自己设计时 定义结构体要不要考虑大小端视你的应用而定,遵循上一个原则
csdn_vieri 2015-05-26
  • 打赏
  • 举报
回复
能举个例子说一下哪些场景下需要编译的时候就知道大小端? 哪些场景下定义结构体还需要考虑大小端

1,324

社区成员

发帖
与我相关
我的任务
社区描述
主要是开发驱动技术
社区管理员
  • 驱动程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧