WinAPI库是否具有名称空间?

时间:2018-02-17 04:53:20

标签: winapi namespaces

作为一名C#程序员,我已经熟悉.Net Framework库中using命名空间的协议。

我想知道WinAPI is implemented in C++unmanaged编程语言with namespaces,如果WinAPI库像 User32 Kernel32 那样例如,也有名称空间?

编辑:我完全清楚 C不包含名称空间。 我问我的问题的印象是,WinAPI库与它设计用于交互的C编程语言之间存在一些抽象。

2 个答案:

答案 0 :(得分:1)

Windows API严格地作为C接口公开。 C中没有名称空间。如果您需要访问API,则必须:

  • 包含声明该函数的相应头文件。
  • 链接到实现它的导入库。

文档告诉您要包​​含的标题以及要链接的库(如果有)。

更新(在问题发生变更后):

从您的a comment看来,您要问的是,某些Windows API实现是否在内部使用命名空间。好吧,我不知道,我也不在乎。而且你也不是。无论答案如何,这些信息都无法解决。

让我们暂时假设,kernel32.dll是用C ++实现的,并使用命名空间。为了维持C接口,API表面上不会出现任何命名空间信息。这使命名空间仅供内部使用。如果它们在内部使用,一旦链接器解析了符号,所有命名空间的痕迹都将丢失。 (符号可能出现在私有调试符号中,甚至是公共调试符号中,也可能出现在用于RTTI的字符串文字中。除了查看它们之外,这些符号都不允许您执行任何有意义的操作。)

答案 1 :(得分:-1)

WinAPI库尽管有C和C ++实现,但没有名称空间,因为它们被设计为与C接口 - 一种不支持名称空间的语言。