c++ - Eigen :设置 EIGEN_STACK_ALLOCATION_LIMIT 不起作用

标签 c++ eigen

我想更改受 Eigen 限制的堆栈大小

我加

#define EIGEN_STACK_ALLOCATION_LIMIT 0

到我的cpp文件。

但是,无论我将 EIGEN_STACK_ALLOCATION_LIMIT 设置成什么值,编译输出总是包含

C:/mingw-w64/x86_64-7.1.0-win32-seh-rt_v5-rev0/mingw64/x86_64-w64-mingw32/include/Eigen/src/Core/util/Macros.h:799:0: note: this is the location of the previous definition #define EIGEN_STACK_ALLOCATION_LIMIT 131072

131072 正好是 128KB,没有变化!为什么?我错了吗?如何为 Eigen 正确设置 EIGEN_STACK_ALLOCATION_LIMIT?另外,如何调整g++ stack size limit?

ps:我知道我不应该使用大的固定尺寸矩阵。但是使用 Dynamic 会神秘地中止编译,所以我正在尝试不同的方法。

最佳答案

在包含任何 Eigen header 之前,您需要定义 EIGEN_STACK_ALLOCATION_LIMIT。最简单的方法是通过编译器参数:

g++ -DEIGEN_STACK_ALLOCATION_LIMIT=0  {... other arguments ...}

关于堆栈大小限制:关于堆栈溢出有几个相关问题。如果它们都不合适,请为此提出一个新问题。

关于c++ - Eigen :设置 EIGEN_STACK_ALLOCATION_LIMIT 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44076146/

相关文章:

c++ - glib 的 GAsyncQueue 等同于 C++?

c++ - Eigen::Map 未命名?

c++ - 使用条件语句在运行时选择不同的模板化矩阵类

c++ - 将自动说明符与 Eigen::Array 对象一起使用时会出现奇怪的结果

c++ - C++ Visual Studio Express 2012 中的舍入错误

c++ - 如何使用(Google Mock)模拟类作为模板参数

c++ - 我应该选择什么类型的 Visual Studio c++ 项目来制作基本的 unix 应用程序

c++ - 打印 vector 的结构元素

c++ - C++ 中的 static_cast complex<short> 到 complex<double>

c++ - Eigen::Matrix 与 uchar 类型的 cv::Mat 之间的转换