我将这些库包含在我的源文件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所说:
修复代码要好得多。
谢谢大家。
答案 0 :(得分:0)
一个简单的解决方案是将#include
替换为#include 。
那不是一个“简单”的解决方案,而是一个“正确”的解决方案。您的源代码有误-请对其进行修复,而不要使用怪异的解决方法。
是否有任何可解决此问题的编译技巧?
您可以尝试将令牌climits
重新定义为limits
,但是它可能无法正常工作,因为它将破坏尝试使用climits
的代码。