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

时间:2016-03-06 18:34:33

标签: c++ hex endianness

当我尝试编译我的程序时,我收到此错误:

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

1 个答案:

答案 0 :(得分:3)

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

在这种情况下,似乎B2=(Mat.return)[sample(nrow((Mat.return)),size=80,replace=TRUE),][,c(2:251)] 似乎是合适的。

如果您想要一个可移植的解决方案,另一种选择是使用类似Boost Endian library的内容。