为什么DDK能够成功编译无效的源文件?

问题描述 投票:0回答:1

首先,您可以通过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 对此没有任何解释。

谁能给我解释一下?

c windows driver wdk
1个回答
3
投票

Rohan 指出,它们是由

warning.h
中的宏定义的。这些定义是为了向后兼容使用非下划线版本的旧代码。

© www.soinside.com 2019 - 2024. All rights reserved.