c++ 函数中额外的下划线名称
Extra underscored name in a c++ function
我了解 c++ 函数需要什么:类型名称(参数){语句}。当一个函数有一个额外的名称时,它叫什么,如下所示:
_API8810AFUNC int API8810A_GetAPI8810AUSBDeviceCnt(int *pnUSBDeviceCnt);?
_API8810AFUNC定义为:
#ifdef _BUILD_API8810ADLL
#define _API8810AFUNC __declspec(dllexport )
#else
"_API8810AFUNC"是否意味着需要以不同的方式调用函数?这在 c++ 中有一个名字吗?
这取决于。
在这种情况下,它是一个宏 - 并且具有非法名称的宏,用于引导* - 扩展到__declspec(dllexport)
。我们可以很容易地谷歌一下,发现它是一个用于 DLL 的Microsoft属性。
它也可以[有条件地]扩展到无,或者它可以扩展到不同的属性,或者它可以扩展到存储类说明符(如static
或extern
)。
为了直接回答您的问题,根据 C++14,函数定义的实际语法如下:
function-definition: attribute-specifier-seq opt decl-specifier-seq optdeclarator virt-specifier-seq optfunction-body function-body
:
ctor-initializeropt复合语句
function-try-block
= default ;
= delete ;
所以它比"类型名称(参数){语句}">要复杂一些,但你离得不远了。
*[C++14: 17.6.4.3.2]:
[..][..]以下划线开头后跟大写字母 (2.12) 的每个名称都保留给实现以供任何使用。[..]
相关文章:
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- VSCode-有一个红色下划线,但程序构建和运行正确,并且出现配音错误
- C++有什么方法可以在既不调用函数模板也不提供其模板参数的情况下引用函数模板?
- 自定义 std::fstream,std::filebuf 的溢出和下溢函数未为每个字符调用
- 下划线不会与"发送输入"一起显示C++
- 在 C++ 中,默认情况下构造函数为类的数据成员提供的值是多少?
- 在 QTextEdit C++ 中为特定行添加下划线
- 在C++中自动向下转换函数参数
- 导出函数中有多少下划线('_')(C++
- 如何在没有可变参数函数的情况下循环函数的参数
- 为什么在某些情况下从函数返回类型中删除 cv 限定符?
- 如何在不使用 STL 的情况下从函数反转字符串后返回字符串C++?
- 有没有选项不自动所有前导下划线 _ 以导出 emscripten 中的函数?
- 程序在没有操作系统信号的情况下在函数中的特定行挂起
- 删除数字并在C++中保留字符串的下划线
- c++ 函数中额外的下划线名称
- 在C 中,Haskell下划线有其他选择吗?
- 如何在不使用返回的情况下从函数获取变量的地址(指针)
- 使用与号后跟下划线命名的变量是什么意思?
- C 代码如何在没有前导下划线的情况下调用外部函数