C++ _byteswap_ulong 未在此范围内声明

C++ _byteswap_ulong was not declared in this scope

当我尝试编译我的程序时出现此错误:

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

您似乎在尝试使用特定于 MS Visual C++ 编译器的函数,该函数在 GCC 中不可用。请改用适当的 GCC builtin

似乎 uint32_t __builtin_bswap32(uint32_t x) 适合这种情况。

另一个选择,如果你想要一个可移植的解决方案,将使用像 Boost Endian library.

这样的东西