首先,您可以通过DDK构建实用程序成功编译以下main.c。
#include <ntddk.h>
NTSTATUS DriverEntry(PDRIVER_OBJECT, PUNICODE_STRING)
{
try
{
leave;
}
except (1)
{
}
return 0;
}
但是,请注意:
“leave”和“ except”都不是有效的 C 语言关键字。
我知道 __leave 和 __ except (即带有双前导下划线)都是微软特定的关键字,用于扩展 C 语言,但“leave”和“ except”不是。
我还确认了“leave”和“ except”不是由宏定义的。 MSDN 对此没有任何解释。
谁能给我解释一下?
Rohan 指出,它们是由
warning.h
中的宏定义的。这些定义是为了向后兼容使用非下划线版本的旧代码。