директива #error в C? - PullRequest
       0

директива #error в C?

34 голосов
/ 16 марта 2011

Не могли бы вы дать информацию о директиве #error в C?

Что такое директива #error?какая польза от этого?

Ответы [ 3 ]

33 голосов
/ 16 марта 2011

Это директива препроцессора, которая используется (например), когда вы ожидаете, что будет определен один из нескольких возможных символов -D, но ни один из них не будет.

#if defined(BUILD_TYPE_NORMAL)
# define DEBUG(x) do {;} while (0) /* paranoid-style null code */
#elif defined(BUILD_TYPE_DEBUG)
# define DEBUG(x) _debug_trace x /* e.g. DEBUG((_debug_trace args)) */
#else
# error "Please specify build type in the Makefile"
#endif

Когда препроцессор достигает #errorдиректива, она сообщит строку как сообщение об ошибке и остановит компиляцию;как именно выглядит сообщение об ошибке, зависит от компилятора.

13 голосов
/ 16 марта 2011

У меня может быть неправильный код, но это что-то вроде ...

#if defined USING_SQLITE && defined USING_MYSQL
#error You cannot use both sqlite and mysql at the same time
#endif

#if !(defined USING_SQLITE && defined USING_MYSQL)
#error You must use either sqlite or mysql
#endif


#ifdef USING_SQLITE
//...
#endif

#ifdef USING_MYSQL
//...
#endif
4 голосов
/ 15 января 2014

Если компилятор компилирует эту строку, то он показывает фатальную ошибку компилятора: и останавливает дальнейшую компиляцию программы:

#include<stdio.h>
#ifndef __MATH_H
#error First include then compile
#else
int main(){
    float a,b=25;
    a=sqrt(b);
    printf("%f",a);
    return 0;
}
#endif

Output:compiler error --> Error directive :First include then compile
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...