español - gcc windows
GCC#pragma para detener la compilación (6)
Esto funciona:
#include <stophere>
gcc se detiene cuando no puede encontrar el archivo de inclusión. Quería que gcc se detuviera si C14 no era compatible.
#if __cplusplus<201300L
#error need g++14
#include <stophere>
#endif
¿Existe una directiva pragma de GCC que detendrá, interrumpirá o abortará el proceso de compilación?
Estoy usando gcc 4.1 pero quisiera que el pragma también esté disponible en las versiones de gcc 3.x.
No sé sobre un #pragma
, pero #error
debe hacer lo que quiera:
#error Failing compilation
Terminará la compilación con el mensaje de error "Falla la compilación"
Puedes usar :
#pragma GCC error "my message"
Pero no es estándar.
mientras que normalmente #error
es suficiente (y portátil), hay momentos en los que desea utilizar un pragma
, es decir, cuando desea ocasionalmente causar un error dentro de una macro.
Aquí hay un ejemplo de uso que depende de C11''s _Generic
y _Pragma
Este ejemplo asegura que var
no es un int *
o un short *
pero no un const int *
en tiempo de compilación.
Ejemplo:
#define MACRO(var) do { /
(void)_Generic(var, /
int *: 0, /
short *: 0, /
const int *: 0 _Pragma("GCC error /"const not allowed/"")); /
/
MACRO_BODY(var); /
} while (0)
Probablemente quieras #error
:
edd@ron:/tmp$ g++ -Wall -DGoOn -o stopthis stopthis.cpp
edd@ron:/tmp$ ./stopthis
Hello, world
edd@ron:/tmp$ g++ -Wall -o stopthis stopthis.cpp
stopthis.cpp:7:6: error: #error I had enough
edd@ron:/tmp$ cat stopthis.cpp
#include <iostream>
int main(void) {
std::cout << "Hello, world/n";
#ifndef GoOn
#error I had enough
#endif
return 0;
}
edd@ron:/tmp$
#pragma GCC error "error message"