使用extern时,我到底会损失什么;";在C++;? 我试图开发一个C++中的动态库,由IDL(交互式数据语言)编写的现有程序调用。我知道我需要使用extern“C”来禁用名称篡改,以便IDL可以调用它需要的函数(调用机制的其余部分非常简单) 然而,我总是犹豫不定地使用一种我不完全理解的语言的特性,所以我的问题是:如果C++恢复到C连接,我会失去什么特性?命名空间将是一个明显的,我想,但是它是否完全禁用C++的所有其他漂亮的特性?我还能使用C++ STL和我所依赖的所有语言特征(尤其是C++ 11个)吗?或者说我基本上是在C语言中编写代码吗?
唯一被丢弃的是外部可见的名称。根据参数类型以及参数计数进行的函数重载将停止工作。本质上,链接阶段的名称解析返回到普通的旧C模式(即一个名称-一个条目)使用extern时,我到底会损失什么;";在C++;? 我试图开发一个C++中的动态库,由IDL(交互式数据语言)编写的现有程序调用。我知道我需要使用extern“C”来禁用名称篡改,以便IDL可以调用它需要的函数(调用机制的其余部分非常简单) 然而,我总是犹豫不定地使用一种我不完全理解的语言的特性,所以我的问题是:如果C++恢复到C连接,我会失去什么特性?命名空间将是一个明显的,我想,但是它是否完全禁用C++的所有其他漂亮的特性?我还能使用C++ STL和我所依赖的所有语言特征(尤其是C++ 11个)吗?或者说我基本上是在C语言中编写代码吗?,c++,c,extern,linkage,C++,C,Extern,Linkage,唯一被丢弃的是外部可见的名称。根据参数类型以及参数计数进行的函数重载将停止工作。本质上,链接阶段的名称解析返回到普通的旧C模式(即一个名称-一个条目) 就实现的内部而言,您可以继续使用标准库和C++11的所有其他优秀特性。只有外部可见实体的名称会被extern C更改,请查看。你不能用外部的“C”做函数重载。谢谢:但是我还能使用C++的其他特性吗?或者函数中的每一个都必须严格C吗?例如,我可以使用“Del”、LAMBDAS还是现有的C++标准库?它(在 Extn)下的所有“C”/“代码>”部分必
就实现的内部而言,您可以继续使用标准库和C++11的所有其他优秀特性。只有外部可见实体的名称会被
extern C
更改,请查看。你不能用<代码>外部的“C”<代码>做函数重载。谢谢:但是我还能使用C++的其他特性吗?或者函数中的每一个都必须严格C吗?例如,我可以使用“Del”、LAMBDAS还是现有的C++标准库?它(在