c++ - 为什么要防止名称修改 C 文件
问题描述
注意:据我所知,我的问题不是试图解决特定问题。
我正在研究在 CPP 项目中使用 C 库来防止编译器名称错误:
#ifdef __cplusplus
extern "C" {
#endif
1-但我也读到 C++ 编译器不会破坏 .c 文件。那何必呢?
2-如果您有一个包含 +500 个 c 文件的库。(头文件+ c文件)。你如何自动将这个外部“C”添加到它们中?有没有工具可以自动化这个过程?
解决方案
c++
编译器可能不会对.c
文件进行名称修改,但它肯定会修改.cpp
文件中包含的名称,因此在头文件中需要它- 您可以简单地使用
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
)
推荐阅读
- github-actions - Fastlane changelog_from_git_commits 在运行到 Github Workflow 时始终为空
- html - 在 CSS 中为同一个类应用两个类
元素但没有指定它们 - python - Django 从表单上传图片
- sql - SQL:当日期是特定月份或为空时获取记录的条件
- javascript - 选中复选框并将样式应用于相应的输入值
- selenoid - 将 sikuli 与 selenoid 集成以处理非 html windows/基于图像的测试
- javascript - 在javascript中选择一次后如何禁用附加选项
- c++ - boost::asio::async_write 写入 ssl::stream 成功但服务器未获取
- c++ - 排序运算符如何工作?
- django - /result X 处的 ValueError 每个样本有 118990 个特征;期待 103815