我得到一个函数参数的警告,这里的类型转换是将byte_order从bigendian int更改为int。所以我把它改成了bigendian int。但这样做会被忽略。
function_call_name((int*)&argument1, argument2));
function_call_name((int* __attribute__((bigendian))) & argument1, argument2);
试图找到解决方案 https://software.intel.com/en-us/node/628908
但事情并没有成功。
我可以得到一些帮助吗? :)
另外,如何知道正在运行的byte_order。我的意思是#ifdef指令?
答案 0 :(得分:0)
例如,如果这些(非标准)限定符与const
限定符类似,那么:
const int *a; // a is a pointer to const int
int const *b; // b is a pointer to int const (same as a)
int * const c = (int[42]){0}; // c is a const pointer to int (DIFFERENT!)
通过尝试修改它们可以观察到这些差异:
a = (int const[]){0}; // This is allowed
a[0] = 42; // This is NOT allowed
c = NULL; // This is NOT allowed
c[0] = 42; // This is allowed
我认为您可能打算写int __attribute__((bigendian)) *
,即将属性放在星号之前,表示您想要一个指向大端{em}的指针1} em>,因为将放在之后会表示指向int
的大端指针...