如何生成编译时错误?

时间:2010-11-15 19:20:13

标签: c++

我希望能够做到这样的事情:

   void f(int*p = nullptr)
    {
    if (!p)
{
//HERE I WOULD LIKE TO HAVE AN MSG THAT WOULD BE DISPLAYED DURING COMPILATION AS A WARNING POSSIBLY
}
    }

4 个答案:

答案 0 :(得分:19)

要基于运行时检查生成编译时警告,只需创建一个名为“warning.c”的文件,其中包含未使用的变量声明。然后,您可以生成类似的警告:

void f(int *p = nullptr) {
    if (!p) {
        system("gcc -Wall warning.c");
    }
}

答案 1 :(得分:10)

正确答案是:你要做的事情永远不会奏效。

答案 2 :(得分:5)

大多数if not all编译器支持#error#warning预处理程序指令。

但是,Microsoft的编译器使用#pragma message()而不是#warning

答案 3 :(得分:3)

Google #if #endif#error预处理程序指令。根据编译时不可用的变量值生成编译错误是不可能的,所以不要忘记它。使用assert()