Как создавать контракты C++, которые компиляторы смогут использовать, как только появится поддержка (например, `[[ожидаеC++

Программы на C++. Форум разработчиков
Anonymous
Как создавать контракты C++, которые компиляторы смогут использовать, как только появится поддержка (например, `[[ожидае

Сообщение Anonymous »

Должны ли вы использовать макрос для обертывания этого (плюс надеюсь, что тот, кто будет использовать ваш код годы спустя, знает, что нужно переопределить макрос для создания контрактов), например

Код: Выделить всё

#define CONTRACT(text) /* TODO */
int f(int x) CONTRACT([[expects: x > 2]]);
?
Думаю, что синтаксис атрибутов Contract близок к #pragma (так что компиляторы без поддержки это проигнорируют),
но int f(int x) [[ожидает: 1]]; (или int f(int x) [[обеспечивает: 1]];) выдает ошибку: ожидается ','
Ссылки:
https://www.open-std.org/jtc1/sc22/wg21 ... 388r4.html
https://www.open-std.org/jtc1 /sc22/wg21/docs/papers/2022/p2521r2.html
https://github.com/doxygen/doxygen/issues/6702
Ошибки Termux g++

Подробнее здесь: https://stackoverflow.com/questions/785 ... s-for-this

Вернуться в «C++»