Ответ 1
Используйте #error
:
#error "YOUR MESSAGE"
Это приводит к ошибке из препроцессора. Если вы хотите обнаружить ошибку на более позднем этапе (например, во время обработки шаблона), используйте static_assert
(функция С++ 11).
Я хотел бы создать ошибку компиляции в моем коде на С++ с помощью специального сообщения об ошибке. Я хочу сделать это по двум причинам:
Я уверен, что есть трюк, но я не могу найти ресурс, объясняющий метод. Я бы обернул код в #define формы COMPILE_FAIL ( "сообщение об ошибке" );
Спасибо D
Используйте #error
:
#error "YOUR MESSAGE"
Это приводит к ошибке из препроцессора. Если вы хотите обнаружить ошибку на более позднем этапе (например, во время обработки шаблона), используйте static_assert
(функция С++ 11).
Посмотрите static_assert
.
Пример:
#include <iostream>
#include <type_traits>
template<typename T>
class matrix {
static_assert(std::is_integral<T>::value, "Can only be integral type");
};
int main() {
matrix<int*> v; //error: static assertion failed: Can only be integral type
}
Чтобы заставить ошибку компилятора (GCC, стиль Clang):
#error "You ain't finished this yet!"