c-为什么DDK可以成功编译一个无效的源文件



首先,您可以通过DDK构建实用程序成功编译以下main.c。

#include <ntddk.h>
NTSTATUS DriverEntry(PDRIVER_OBJECT, PUNICODE_STRING)
{
    try
    {
        leave;
    }
    except (1)
    {
    }
    return 0;
}

但是,请注意:

"leave"one_answers"except"都不是有效的C语言关键词。

我知道__leave和__except(即带双前导下划线)都是微软特定的关键字,用于扩展C语言,但"leave"one_answers"except"不是。

我还确认了"离开"one_answers"除外"不是由宏定义的。MSDN对此没有任何解释。

谁能给我一个解释?提前谢谢。

正如Rohan所指出的,它们是由warning.h中的宏定义的。这些定义是为了与使用非下划线版本的旧代码向后兼容。

最新更新