2010-02-08 13 views

Odpowiedz

50

miejsce wszędzie:

#ifndef DEBUG 
#error Only Debug builds are supported 
#endif 
3

Jeśli po prostu chcesz zgłosić błąd:

#ifdef RELEASE 
    #error Release mode not allowed 
#endif 

będzie działać z większością kompilatorów.

4

Możesz użyć do tego dyrektywy error. Poniższy kod wygeneruje błąd w czasie kompilacji, jeśli DEBUG nie jest zdefiniowana:

#ifndef DEBUG 
#error This is an error message 
#endif 
+0

Przepraszam, wymieszać pragmy i błędów podczas pisania. Poprawione w odpowiedzi. –

13

C dostarczenie #error oświadczenie, a większość kompilatory dodać #warning oświadczenie. The gcc documentation recommends, aby zacytować wiadomość.

+1

@Antonio W porządku, nie ma tam [więcej] zalecenia. Zamieniłem link na jeden do dokumentu gcc. – philant

6

Może coś bardziej wyrafinowanego, ale jest to tylko kopia z poprzedniej wersji. :-)

#ifdef DEBUG   
    #pragma message ("Debug configuration - OK") 
#elif RELEASE 
    #error "Release configuration - WRONG" 
#else 
    #error "Unknown configuration - DEFINITELY WRONG" 
#endif 

P.S. Istnieje również jeden sposób generowania ostrzeżenia. Tworzenie bez numeru referencyjnego Labe jak

HereIsMyWarning: 

i nie odwoływać. Podczas kompilacji dostaniesz ostrzeżenie jak

1>..\Example.c(71) : warning C4102: 'HereIsMyWarning' : unreferenced label 
1

Dla GCC i Clang (i prawdopodobnie kompilatora, który obsługuje funkcję _Pragma) można zdefiniować makro:

#if ! DEBUG 
#define FIX_FOR_RELEASE(statement) _Pragma ("GCC error \"Must be fixed for release version\"") 
#else 
#define FIX_FOR_RELEASE(statement) statement 
#endif 

Można użyć tego makra do czasowego hacki , na przykład, aby ominąć kod, którego nie napisał jeszcze współpracownik, aby upewnić się, że nie zapomnisz go naprawić, gdy chcesz udostępnić kompilację publicznie. Albo

FIX_FOR_RELEASE() 
// Code that must be removed or fixed before you can release 

lub

FIX_FOR_RELEASE(statement that must be removed or fixed before you can release); 
1

w kodzie :: Blocks, jeśli nie chcesz tryb wydania, można usunąć w trybie uwolnienia. Aby to zrobić, kliknij menu Projekt, wybierz Właściwości ..., a na karcie Utwórz cele kliknij przycisk Zwolnij, a następnie kliknij przycisk Usuń. Usunięcie trybu Release dotyczy tylko bieżącego projektu, więc nadal można go używać w innych projektach.

W przeciwnym razie, jeśli naprawdę chcesz używać preprocesora, można to zrobić:

#ifdef RELEASE 
#error "You have to use the Debug mode" 
#endif 
Powiązane problemy