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

C++ _byteswap_ulong was not declared in this scope

本文关键字:范围内 声明 byteswap ulong C++      更新时间:2023-10-16

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

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 内置。

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

如果您想要一个便携式解决方案,另一种选择是使用类似 Boost 字节序库。