2017-07-19 52 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 ...

相關問題