2016-03-06 176 views
0

,當我嘗試編譯我的程序我得到這個錯誤:C++ _byteswap_ulong在此範圍內未聲明

error: ‘_byteswap_ushort’ was not declared in this scope 
long lNum = (long)_byteswap_ushort(iNum); 

這是程序:

#include <iostream> 
#include <sstream> 
#include <stdlib.h> 

using namespace std; 

int main() 
{ 
    long inputNum; 
    cout << "Input number:\n"; 
    cin >> inputNum; 

    long Num = (long)_byteswap_ulong(iNum); 
    stringstream oss; 
    oss << hex << Num; 
    string mystring = oss.str(); 

    return 0; 
} 

我認爲包括STDLIB應解決問題。還有其他我應該包括的圖書館嗎?

程序編譯時:

g++ -m32 -o output32 prog.cpp 
+0

供應商定義的函數(以_開頭); MS VC擴展。參考https://msdn.microsoft.com/en-us/library/a3140177.aspx –

+0

來自msdn的示例,給我提供了同樣的錯誤 – cirval

+2

您是否正在Windows系統上編譯此代碼?使用微軟頭文件? –

回答

3

你似乎在試圖用具體到微軟的Visual C++編譯器,這是不是在GCC能夠使用的功能。改爲使用適當的GCC builtin

在這種情況下似乎是uint32_t __builtin_bswap32(uint32_t x)

如果您想要一個便攜式解決方案,另一種選擇是使用類似Boost Endian library的東西。