相关疑难解决方法(0)

gcc中有128位整数吗?

我想要一个128位整数,因为我想存储两个64位数的乘法结果.在gcc 4.4及以上版本中有没有这样的东西?

c gcc x86-64 bigint 128-bit

39
推荐指数
3
解决办法
6万
查看次数

是否有任何具有非IEEE C/C++浮动格式的现代平台?

我正在写一个视频游戏,Humm和Strumm,它需要在游戏引擎中使用网络组件.我可以很容易地处理字节序的差异,但是我试图处理可能的float内存格式时遇到了障碍.我知道现代计算机都有标准的整数格式,但我听说他们可能都不会将IEEE标准用于浮点整数.这是真的?

虽然我当然可以将它作为字符串输出到每个数据包中,但我仍然需要转换为每个客户端的"众所周知的格式",无论平台如何.标准printf()并且atod()不够.

请注意,因为这个游戏是一个可以在GNU/Linux,*BSD和Microsoft Windows上运行的免费/开源软件程序,所以我不能使用任何专有解决方案,也不能使用任何单平台解决方案.

干杯,
帕特里克

c++ memory types network-programming ieee-754

14
推荐指数
2
解决办法
1071
查看次数

const函数指针

我在函数指针方面遇到了一些困难.我有一个基类,它定义了一个函数指针,通过typedef double(*function)(double*x)const;

  • 一个快速的问题:为什么上面的typedef不能编译?

    给出以下错误:错误:'function'上的'const'和'volatile'函数说明符在类型声明中无效

对于下面的部分,我使用typedef double(*function)(double*x).现在每个子类都可以实现这种类型的多个不同版本的函数.通过枚举我选择我选择的函数,它将我的非成员函数指针(在基类中定义)设置为由子类的这些成员函数指针之一初始化.这是一段代码片段:

子类的源文件:

PndLmdROOTDataModel1D::PndLmdROOTDataModel1D(interpolation_type intpol_type) {
  if(intpol_type == CONSTANT) {
    setModelFunction(&PndLmdROOTDataModel1D::evaluateConstant); 
  }
  else if (intpol_type == SPLINE) {
    setModelFunction(&PndLmdROOTDataModel1D::evaluateSpline);
  }
  else {
    setModelFunction(&PndLmdROOTDataModel1D::evaluateLinear);
  }
}
Run Code Online (Sandbox Code Playgroud)

和基类(头文件):

class MultiModel1D: public Model1D {
protected:
  function model_func;

public:
  MultiModel1D();
  virtual ~MultiModel1D();

  void setModelFunction(function f);
}
Run Code Online (Sandbox Code Playgroud)

编译时我收到以下错误:

注意:参数1从'double(PndLmdROOTDataModel1D ::*)(double*)'到'function {aka double(*)(double*)}'没有已知的转换

我正在使用函数指针,因为速度问题(至少我认为这应该比不断运行某些开关案例更快).我究竟做错了什么?也许还有一些设计模式可以作为更好的选择...提前感谢!

史蒂夫

c++ pointers function

3
推荐指数
2
解决办法
9702
查看次数

1
推荐指数
1
解决办法
250
查看次数