我正在使用C++开始一个项目,除了一些学校项目外,我以前没有在此之外使用过——这些项目远远没有我现在要处理的范围那么大。
我的目标是尽力遵循C++核心指南,以避免错误、提高性能和最重要的是:改善代码的可维护性。
我遇到了数百个问题,从我的g++ / Clang++版本不正确到无法找到标准库,再到g++使用错误的C++版本进行编译,甚至到一些基本函数的行为与预期不符——而我甚至还没开始研究autotools,因此我预计会有更多的头痛随之而来。
但这个问题只涉及C++核心指南的一个部分。 接口6:倾向于使用Expects()表达先决条件
我尝试编写以下简单的代码:
#include <iostream>
using namespace std;
int square(int x) {
Expects(x > 0);
return x * x;
}
int main() {
cout << square(3) << endl;
return 0;
}
在g++中出现了错误:
$> g++ -std=c++17 main.cpp
main.cpp: In function ‘int square(int)’:
main.cpp:7:2: error: ‘Expects’ was not declared in this scope
Expects(x > 0);
^~~~~~~
-> [1]
我也尝试使用Clang,但是它有一个完全不同(且无关)的问题:
$> clang++ -x c++ main.cpp
main.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
^~~~~~~~~~
1 error generated.
-> [1]
我还没有弄清楚如何修复那个问题,所以我不会再去烦它了。
sudo apt-get
来获取GSL吗? - stevendesu