首页 > 解决方案 > 如何防止用户在 C 和 C++ 项目的通用头文件中编写 C++ 代码?

问题描述

我们有两个项目。一个项目是 C++(比如 SourceA),而另一个项目只有 C(比如 SourceB)。两者都有不同的存储库,但它们之间很少有共同的头文件。在编译 SourceB 时,我从 SourceA 复制通用头文件。

由于 AsourceA 是 C++ 代码,我希望用户防止在通用头文件中编写任何 C++ 代码,以便它也可以在 SourceB 中编译。有什么办法吗?我尝试使用extern "c"{},但里面的 C++ 代码extern "C"没有给出错误。

我正在为 SourceA 使用 Eclipse IDE,如果有任何设置 Eclipse,那么它也可以工作。

一般来说,人们如何处理这个问题?

标签: c++ceclipse-cdt

解决方案


通常,如果是多个项目之间共享的库,您可以将它们放在自己的“公司标准”存储库中。然后,每个文件的项目特定版本将是该项目的本地版本,如果有人对文件进行更改并提交到项目特定的 repo,它不会影响任何其他项目。

然后,当需要更新“公司标准”文件时,您可以在他们自己的存储库中更新它们,然后让每个项目根据需要进行更新,通过检查差异来查看是否有任何项目特定的更改需要保留。

也就是说,在与本地项目不同的一个位置检查“公司标准”存储库中所有文件的最新版本。然后使用差异工具更新您的本地项目文件。检查哪些文件不同,如果找到,请检查更改的内容。然后最后提交到特定于项目的 repo。

您还可以通过设置该文件属性来写保护实际文件。那么没有人应该错误地编辑它们,因为 IDE 会给出一些关于它的消息。


推荐阅读