首页 > 解决方案 > 为什么要防止名称修改 C 文件

问题描述

注意:据我所知,我的问题不是试图解决特定问题。

我正在研究在 CPP 项目中使用 C 库来防止编译器名称错误:

#ifdef __cplusplus
extern "C" {
#endif

1-但我也读到 C++ 编译器不会破坏 .c 文件。那何必呢?

2-如果您有一个包含 +500 个 c 文件的库。(头文件+ c文件)。你如何自动将这个外部“C”添加到它们中?有没有工具可以自动化这个过程?

标签: c++clinkername-mangling

解决方案


  1. c++编译器可能不会对.c文件进行名称修改,但它肯定会修改.cpp文件中包含的名称,因此在头文件中需要它
  2. 您可以简单地使用extern "C"{ file content here },这可以在许多工具中轻松完成。

我为你写了一个 cmd 脚本(.bat)

警告:这将覆盖现有文件,请进行备份!

@ECHO OFF
for /R %%f in (*.c,*.h) do (
   @echo extern "C" { > temp
   @echo. >> temp
   @type %%f >> temp
   @echo. >> temp   
   @echo } >> temp
   @type temp > %%f
   @echo processed %%f
)

推荐阅读