【问题标题】:C/C++ : A weird library function declarationC/C++:一个奇怪的库函数声明
【发布时间】:2015-03-30 00:18:27
【问题描述】:

我在 C/C++ 库中发现了这种函数声明,我想知道以这种方式声明函数的任何标准...

SOMELIBAPI( someReturnType, someLibFuncName, (int arg1, int arg2));

感谢您提供的任何信息!

【问题讨论】:

  • 只是一个宏...
  • 真的吗?因为也有使用相同方式定义函数: SOMELIBAPI( someReturnType, someLibFuncName, (int arg1, int arg2)){....}
  • 然后呢?函数声明和定义只允许有 ; 不同。或 {…}
  • 没有“C/C++ 库”之类的东西。您使用哪种语言?
  • @LightnessRacesinOrbit:这实际上可以解释宏,很有可能宏在编译为 C++ 时隐藏了 extern "C"

标签: c++ c function


【解决方案1】:

这可能有条件地扩展到任一

__declspec(dllexport) someReturnType someLibFuncName (int arg1, int arg2) 

__declspec(dllimport) someReturnType someLibFuncName (int arg1, int arg2).

这样做的原因是它允许您在 DLL 和客户端应用程序中使用相同的标头。这样做也是suggested by MSDN

这留下了一个悬而未决的问题,为什么使用类似函数的宏而不是更简单的“普通”宏。

【讨论】:

    【解决方案2】:

    他们使用宏来创建函数声明,可能类似于

    #define SOMELIBAP(a, b, c) extern "C" a b c ;
    

    【讨论】:

      猜你喜欢
      • 2016-02-22
      • 1970-01-01
      • 1970-01-01
      • 2014-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多