【问题标题】:Possible to check return type of a function?可以检查函数的返回类型吗?
【发布时间】:2014-04-16 19:09:49
【问题描述】:

假设我有一个函数..

void * getValue(...);

有没有办法检查对 getValue(...) 的调用的返回类型?

我计划在程序中使用 void* 方法,例如 getValue(),我的程序的进程将取决于 getValue() 的返回类型。

是否可以检查返回类型?

【问题讨论】:

  • 如果我理解您的问题,您想创建两个具有相同名称但返回类型不同的函数吗?如果是这样,除非您的两个方法具有不同数量的参数或具有不同的类型,否则您无法区分它们,因为 C 中的方法签名采用方法的名称及其参数的数量和类型。
  • 基本上……最好只写两个独立的函数
  • 可能是的,或者你可以使用@pmg 所说的结构
  • @BrendanRius:我假设你在这里混淆了 C 和 C++。

标签: c types void-pointers


【解决方案1】:

您可能希望返回一个结构

enum valuetype {PCHAR, PSHORT, PINT, PLONG, PLLONG, PFLOAT, PDOUBLE, PLDOUBLE};
struct sometype {
    enum valuetype vt;
    void *value;
}
struct sometype getValue(...);

【讨论】:

    【解决方案2】:

    恐怕您无法准确判断 (void *) 指针中存储的内容。如果您需要我的建议,请更改您的代码并使用正确的类型指针

    【讨论】:

    • 我会听取你的建议* :)
    【解决方案3】:

    否 - C 不使用类型标记值,因此信息不可用。

    可能的替代方法包括向函数添加 out 参数以指示类型,或制作/使用包含值和指示其类型的枚举的变体结构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-11
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 2019-02-10
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      相关资源
      最近更新 更多