C 为什么DDK可以成功编译无效的源文件?
首先,您可以通过DDK构建实用程序成功编译以下main.cC 为什么DDK可以成功编译无效的源文件?,c,windows,compiler-construction,driver,wdk,C,Windows,Compiler Construction,Driver,Wdk,首先,您可以通过DDK构建实用程序成功编译以下main.c #include <ntddk.h> NTSTATUS DriverEntry(PDRIVER_OBJECT, PUNICODE_STRING) { try { leave; } except (1) { } return 0; } #包括 NTSTATUS DriverEntry(PDRIVER\u对象,PUNICODE\u字符串) { 尝试 {
#include <ntddk.h>
NTSTATUS DriverEntry(PDRIVER_OBJECT, PUNICODE_STRING)
{
try
{
leave;
}
except (1)
{
}
return 0;
}
#包括
NTSTATUS DriverEntry(PDRIVER\u对象,PUNICODE\u字符串)
{
尝试
{
离开
}
第(1)款除外
{
}
返回0;
}
但是,请注意:
“leave”和“except”都不是有效的C语言单词
我知道uuu leave和uuu except(即带双前导下划线)都是microsoft特定的关键字,用于扩展C语言,但“leave”和“except”不是
我还确认宏没有定义“离开”和“除外”。MSDN对此没有任何解释
谁能给我一个解释?提前感谢。正如Rohan所指出的,它们是由
warning.h
中的宏定义的。这些定义是为了与使用非下划线版本的旧代码向后兼容。我发现它们在inc\api\warning.h
中定义为宏。但是,关于它的文档并不多。DDK不编译任何东西:编译器编译。