【问题标题】:Can you explain this C definition from efilib.h?你能解释一下 efilib.h 中的这个 C 定义吗?
【发布时间】:2016-12-30 00:56:13
【问题描述】:

我正在学习 UEFI 编程,我注意到许多 EFI 头文件显示了我无法理解的语法块:

typedef
EFI_STATUS
(EFIAPI *EFI_TEXT_STRING) (
    IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
    IN CHAR16 *String
);
  • 您能否解释一下在这种情况下typedef 的论点是什么?
  • 为什么那些IN 是合法的语法?它是编译器特有的功能吗?

【问题讨论】:

  • 以后请每个问题只问一个问题。
  • 您可以先浏览一下宏,看看它们是如何有效使用的。这将帮助您更快地理解这一点。
  • IN 很可能是宏,很可能扩展为const
  • @LPs 是的,我做到了,我终于找到了定义 IN、OUT 和 OPTIONAL 的预处理器指令(它们恰好在 efidef.h 中)。

标签: c gcc syntax uefi compiler-specific


【解决方案1】:

这是一个函数指针的简单类型定义。 EFI_TEXT_STRING 类型是一个指向函数的指针,该函数将指向 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL 的指针作为其第一个参数,并将指向 CHAR16 的指针作为其第二个参数。该函数返回类型 EFI_STATUS。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    相关资源
    最近更新 更多