我理解c ++函数需要什么:type name(parameters){statements}。当函数有一个额外的名字时,它叫什么:
_API8810AFUNC int API8810A_GetAPI8810AUSBDeviceCnt(int *pnUSBDeviceCnt);?
_API8810AFUNC定义为:
#ifdef _BUILD_API8810ADLL
#define _API8810AFUNC __declspec(dllexport )
#else
“_API8810AFUNC”是否意味着需要以不同方式调用该函数?它在c ++中有一个名字吗?
答案 0 :(得分:1)
取决于。
在这种情况下,它是一个宏 - 一个具有非法名称的引导* - 扩展为variable2
。我们可以通过Google轻松找到it's a Microsoft attribute for use with DLLs。
它也可以[有条件地]扩展为空,或者它可以扩展到不同的属性,或者它可以扩展为存储类说明符(如__declspec(dllexport)
或static
)。
要直接回答您的问题,每个C ++ 14的函数定义的实际语法如下:
函数的定义:
attribute-specifier-seq opt decl-specifier-seq opt declarator virt-specifier-seq opt function-body
功能体:
ctor-initializer opt compound-statement
功能试块
extern
= default ;
所以它比“type name(parameters){statements}”稍微复杂一些,但你离它不远。
* = delete ;
[..] [..] 以下划线后跟大写字母(2.12)开头的每个名称都是保留给任何用途的实现。 [..] 子>