2009-10-20 2 views
0

Есть ли способ преднамеренно вызвать ошибку компиляции при выполнении определенного условия в Visual Studio 2008?Deliberatly запускает ошибку компиляции в Visual Studio 2008

+4

. #error работает для вас? – kenny

+0

http://msdn.microsoft.com/en-us/library/c8tk0xsk%28VS.80%29.aspx – kenny

+1

@Kenny: вы можете опубликовать это вместо ответа. Это может быть просто то, что André ищет ... –

ответ

2

В C++ вы можете использовать макросы, как следующее, чтобы вызвать время компиляции Assert, когда заданное постоянное условие ложно

#define COMPILE_ASSERT(expr) extern int __assertutil[(expr) != 0] 

COMPILE_ASSERT(42 != 8); // Fine 
COMPILE_ASSERT(42 == 8); // Error 

Это работает, потому что в том случае, если выражение ложно будет иметь постоянное значение of 0. Массивы в C++ не могут иметь постоянный размер 0 и это приводит к ошибке компиляции.

+0

Это наиболее близко к тому, что я искал, но в C# –

9

Вы можете использовать функцию предварительного процессора #error.

Вы можете использовать его, как например:

#ifdef WIN32 
    ... code for windows 
#else 
    #error only windows is supported 
#endif 
0

Есть язык конкретных директив препроцессора. В C#:

#define DEBUG class MainClass { 
    static void Main() 
    { 
#if DEBUG 
#error DEBUG is defined 
#endif 
    } 
} 

От MSDN.

0

Интересно, если вы ищете способ проверки исходного кода перед компиляцией. Если это так, вы можете использовать шаг предварительной сборки и не выполнить его (выйти с кодом, отличным от 0), чтобы прервать компиляцию.

Смежные вопросы