C 工程 转 C++ 问题

2016-04-23 10:34:07 +08:00
 xuboying
我有一个包含 50+ .c 和 20+ .h 的 c 工程,需要转成 c++类以便在单个 exe 中产生多个实例

是否有通用的指导方法

我 google 了一下,想到下面几点

1. 把.c 改为 .cpp 解决所有隐式转换的错误

2. 删除 static 修饰,处理全局名字冲突

3. 创建一个全局.h 文件,新建一个 FOO 类,把所有的全局函数,变量放入这个类

4. 原先保存宏和常数的头文件以 extern "C"方式 include

5. 所有的函数重命名为 FOO::函数
2273 次点击
所在节点    C
7 条回复
wezzard
2016-04-23 10:51:59 +08:00
extern "C",關鍵字 C++ name mangling
xuboying
2016-04-23 11:02:10 +08:00
遇到一个 enum 的问题
static const struct {
const char* const mode;
int opcode;
enum { AAA, BBB } type;
} ssh_ttymodes[] = {
{ "INTR", 1, AAA },
{ "QUIT", 2, AAA },
{ "ERASE", 3, AAA },
{ "KILL", 4, AAA },
//...
};

AAA 这种白字在 C 里合法, C++不合法,但是这个 AAA 在哪个名字空间下呢?
wangxn
2016-04-23 13:12:14 +08:00
不要用 C 的思维写 C++。
老老实实定义一个类,而不是用 typedef 。
soland
2016-04-23 13:27:17 +08:00
手动,重新写。
xuboying
2016-04-23 13:30:17 +08:00
@soland 差不多,很多宏要用模板重写 :(
xxgirl2
2016-04-23 15:29:27 +08:00
在单个 exe 中产生多个实例
这个……包装成 handle 么……
allenx
2016-06-08 14:29:08 +08:00
估计是各种全局变量满天飞,老老实实改吧。 c 写的好多线程、多实例也是非常 easy ,代码写的丑而已。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/273826

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX