小编Ben*_*Ben的帖子

在两个大整数的乘法期间捕获并计算溢出

我正在寻找一种有效(可选的标准,优雅且易于实现)的解决方案来乘以相对较大的数字,并将结果存储为一个或多个整数:

假设我有两个64位整数,如下所示:

uint64_t a = xxx, b = yyy; 
Run Code Online (Sandbox Code Playgroud)

当我这样做时a * b,如何检测操作是否导致溢出,并且在这种情况下将进位存储在某处?

请注意,我不想使用任何大号库,因为我对存储数字的方式有限制.

c integer bit-manipulation overflow multiplication

60
推荐指数
6
解决办法
5万
查看次数

切换到gdb中的程序集

在gdb中调试C或C++程序时是否有任何方法可以切换到程序集?(鉴于所有源文件及其相应的汇编文件都可用)

assembly gdb

33
推荐指数
3
解决办法
4万
查看次数

在已分配的内存上调用构造函数

这是一个简短的问题:

使用C++,如何在已经分配的内存区域上调用构造函数?

c++ constructor

26
推荐指数
2
解决办法
9443
查看次数

识别模板中的基元类型

我正在寻找一种方法来识别模板类定义中的基元类型.

我的意思是,有这个课:

template<class T>
class A{
void doWork(){
   if(T isPrimitiveType())
     doSomething();
   else
     doSomethingElse(); 
}
private:
T *t; 
};
Run Code Online (Sandbox Code Playgroud)

有没有办法"实现"isPrimitiveType().

c++ templates

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

如何在Perl中创建多维数组?

我对Perl有点新意,但这就是我想做的事情:

my @array2d;
while(<FILE>){
  push(@array2d[$i], $_);
}
Run Code Online (Sandbox Code Playgroud)

它不编译,因为@array2d[$i]它不是数组而是标量值.

我应该如何将@ array2d声明为数组数组?

当然,我不知道我有多少行.

arrays perl multidimensional-array data-structures

18
推荐指数
3
解决办法
5万
查看次数

在gdb中调用operator <<

你如何operator<<(std::ostream &os, const ClassX &x)从gdb内部打电话?

换句话说,如何在gdb中打印对象?

call std::cout<<x或者call operator<<(std::cout, x)似乎不适合我!

有任何想法吗?

c++ gdb stream-operators

16
推荐指数
2
解决办法
6417
查看次数

打印宏的名称和值

我有一个C程序,可以使用#defines 启用或禁用许多优化.当我运行我的程序时,我想知道在编译时定义了哪些宏.

所以我试着编写一个宏函数来打印宏的实际值.像这样的东西:

SHOW_DEFINE(X){\
  if( IS_DEFINED(X) )\
      printf("%s is defined and as the value %d\n", #X, (int)X);\
  else\
      printf("%s is not defined\n", #X);\
}
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何使它工作,我怀疑这是不可能的,有没有人知道如何做到这一点?

(请注意,即使未定义宏,也必须编译!)

c c-preprocessor

11
推荐指数
1
解决办法
4万
查看次数

将线程绑定到处理器

当我运行多线程代码时,系统(linux)有时会将线程从一个处理器移动到另一个处理器.由于我拥有与处理器一样多的线程,因此没有充分理由使缓存失效,并且使我的跟踪活动混乱.

你知道如何将线程绑定到处理器,为什么系统会这样做?

c linux multithreading pthreads

7
推荐指数
2
解决办法
9074
查看次数

固定长度的大整数

我正在寻找一个大整数的库,但有固定的宽度(128或256就足够了).原因是我不想在堆上进行任何分配.我试图自己制作它们但是实现乘法,除法和模数一种有效的方式似乎是一种非常痛苦的方法.

这已经存在吗?

谢谢

c c++ biginteger

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

如何处理代码中的优化

我目前正在为一些代码编写各种优化.每个优化都会对代码效率产生很大影响(希望如此),但也会影响源代码.但是,我希望保留启用和禁用其中任何一个以进行基准测试的可能性.

我传统上使用这种#ifdef OPTIM_X_ENABLE/#else/#endif方法,但代码很快就难以维护.

还可以为每个优化创建SCM分支.在您想要启用或禁用多个优化之前,代码可读性要好得多.

有没有其他的,希望更好的方法与优化一起工作?

编辑:一些优化不能同时工作.我可能需要禁用旧的优化来替换新的优化,看看我应该保留哪一个.

c c++ optimization

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