【发布时间】:2011-10-14 16:56:15
【问题描述】:
在 C++ 中实现 C 库有什么缺点?该库将用于使用 Visual Studio 2008 或更新版本为普通 PC 构建 Windows 应用程序。目前尚不清楚为什么规范声明它应该是 C 库。我猜他们想要的是纯 C-API,而不是纯 C lib。但我的老板不同意。
无论如何,我想做的就是extern "C"所有函数声明,并在实现文件中使用C++。我做了一些测试,即使应用程序被编译为 C(通过更改 Visual Studio 中的项目选项),一切正常。
【问题讨论】:
-
我认为您需要询问您的客户他们的意思。如果他们打算在没有 libsdtc++ 的嵌入式设备上使用这个库,那你就完蛋了。
-
我并不特别了解 Visual Studio,但一般来说,如果要将库链接到 C 程序,在 C++ 中创建它(使用 extern "c" 声明)可能会导致问题,除非链接器知道执行 C++ 启动。如果您可能需要将其作为 C 友好库移植到另一个编译器,那么在纯 C 中实现可能是一个更安全的决定。
-
顺便说一句,我同意你的看法。你的老板认为客户会关心编译代码的源语言而不是所述代码的 API,这让我想知道他是如何成为任何人的老板。
-
@Tomalak:C++ 库可能需要 C++ 运行时,可能还需要 C++ 初始化,这使得它们在 C 程序中不受欢迎。如果我要求一个 C 库并得到一个带有包装器的 C++ 库,我会很不高兴。
-
另一个例子:如果客户要接收源代码,他们可能希望用 C 语言来理解它。
标签: c++ c windows visual-studio