如何防止用户在 C 和 C++ 项目之间的公共头文件中编写 C++ 代码?

How to prevent users writing C++ code in common header files between C and C++ project?

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

由于AsourceA是C++代码,我希望用户避免在公共头文件中写入任何C++代码,这样它也能在SourceB中编译。有什么办法吗?我尝试使用 extern "c"{}extern "C" 中的 C++ 代码没有给出错误。

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

一般情况下人们是如何处理这个问题的?

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

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

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

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