C ++将<limits>库与gcc链接

时间:2018-11-26 22:14:28

标签: c++ gcc compiler-errors compilation g++

我将这些库包含在我的源文件main.cpp中:

 #include <iostream>
 #include <climits>

我用Visual Studio 2017,Windows编写的全部代码。

代码文件传输到Linux。

当我尝试使用g++ Item.cpp main.cpp -o main进行编译时,它为此部分提供了一个数组:

items[size - 1]->points = std::numeric_limits<int>::min();

以下错误

main.cpp: In function ‘void insert_p(Item**, int, int&)’:
main.cpp:287:33: error: ‘numeric_limits’ is not a member of ‘std’
items[size - 1]->points = std::numeric_limits<int>::min();
                             ^~~~~~~~~~~~~~
main.cpp:287:48: error: expected primary-expression before ‘int’
items[size - 1]->points = std::numeric_limits<int>::min();
                                            ^~~

一个正确的解决方案就是替换#include <climits>#include <limits>

不幸的是,这是挑战:是否可以在不更改我的源代码的情况下解决此问题?

是否有任何可解决此问题的编译技巧?

我正在寻找类似g++ Item.cpp main.cpp -o main -llimits的命令来链接<limits>库。

[编辑]:

使用以下命令解决了我的问题:

 g++ Item.cpp main.cpp -o main -include "limits"

检查以下内容:https://stackoverflow.com/a/3387518/7977464

正如@ user4581301所说:

  

修复代码要好得多。

谢谢大家。

1 个答案:

答案 0 :(得分:0)

  

一个简单的解决方案是将#include 替换为#include

那不是一个“简单”的解决方案,而是一个“正确”的解决方案。您的源代码有误-请对其进行修复,而不要使用怪异的解决方法。


  

是否有任何可解决此问题的编译技巧?

您可以尝试将令牌climits重新定义为limits,但是它可能无法正常工作,因为它将破坏尝试使用climits的代码。