2017-07-19 89 views
3

我得到一个函数的参数的警告,这里的类型转换正在将byte_order从bigendian int改为int。所以我把它改成bigendian int。但这样做会被忽略。什么时候byte_order更改被忽略?

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指令?

+1

是'argument1'什么类型的? – 4386427

+1

您链接的网页具有所有细节,并且包含如何声明使用非默认'endian'字节排序的函数的示例。你在做什么,字节排序甚至是一个考虑因素? – user3629249

+0

@ 4386427参数1是size_t类型和函数是像 '函数(INT *参数1,字符* param2的);' –

回答

0

如果这些(非标准)限定符像const限定符任何东西,例如,则:

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 

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!) 

到这些差异可以通过尝试修改它们被观察


我想你可能打算写int __attribute__((bigendian)) *,即把属性之前的星号去掉注意,你想要一个指针大端int,因为把它之后将意味着一个大端指针int ...