Я начинаю проект с использованием C ++, который я раньше не использовал, за исключением нескольких школьных проектов - нигде не выходя за рамки того, чем я сейчас занимаюсь.
Моя цель - попробоватья стараюсь следовать C ++ Core Guidelines , пока я работаю, чтобы избежать ошибок, повысить производительность и, самое главное: улучшить удобство сопровождения моего кода.
Я буквально столкнулся с сотни проблем, начиная от того, что мои версии g ++ / Clang ++ не были правильными, до того, что стандартные библиотеки не были найдены для g ++, использующего неправильную версию C ++ для компиляции, до самых базовых функций, которые не работают должным образом - , и я даже не имеюЯ начал изучать автоинструменты , поэтому я ожидаю, что последует еще много головной боли.
Однако этот вопрос относится только к одной части Основных рекомендаций C ++. Интерфейсы 6: Предпочитать Expect () для выражения предварительных условий
Я попытался написать следующий простой код:
#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]
Я еще не понял, как это исправить, поэтому я 'я не беспокоюсь об этом.