• 6674阅读
  • 23回复

有工具能把C写的代码转到C++吗?怎么办呢?怎么办呢? [复制链接]

上一主题 下一主题
离线iiiyyyhhhsss
 

只看楼主 倒序阅读 楼主  发表于: 2009-08-27
现在有一大堆用C写的代码?但是我想在QT平台上把它们编译,怎么办呢?如果要修改,不知改到何年何月啊。。。。
[ 此帖被iiiyyyhhhsss在2009-08-27 11:38重新编辑 ]
离线20044454
只看该作者 1楼 发表于: 2009-08-27
。。。。。。。。。。。。。
让我做一个Qt的大牛!!!!
离线iiiyyyhhhsss

只看该作者 2楼 发表于: 2009-08-27
由于我要给这些代码编写一个界面,有可能c和c++同时用吗?如果只能用一种,那只能用C++了,因为我要写界面的话,是这样吗?
离线dbzhang800

只看该作者 3楼 发表于: 2009-08-27
不清楚你要做什么么,C++不是基本上可以包括C么? C的代码不都几乎可用C++ 编译器直接编译么?
离线iiiyyyhhhsss

只看该作者 4楼 发表于: 2009-08-27
不行啊,例如就保留字就不一样了啊。。。
还有很多很多其它的问题。。。。
离线dbzhang800

只看该作者 5楼 发表于: 2009-08-27
举个例子出来呢?
离线iiiyyyhhhsss

只看该作者 6楼 发表于: 2009-08-27
例如new是C++的保留字,却不是C的保留字。。。
离线dbzhang800

只看该作者 7楼 发表于: 2009-08-27
晕,你是要从C转到C++ ,而不是从C++ 转到C, C里面没有new对你有什么影响呢?
离线yj_yulin

只看该作者 8楼 发表于: 2009-08-27
正常的C代码基本上都是C++代码,楼主还是编译了看有什么问题再说好了,真搞了特别的东西,别说是C到C++,就是维护,都能让人一个头两个大。
主要问题应该不会在语法上的。
离线allblue

只看该作者 9楼 发表于: 2009-08-27
路过,嘿嘿
黑暗魔法
离线iiiyyyhhhsss

只看该作者 10楼 发表于: 2009-08-27
是你们弄反了吧?我是说它的c代码里用了C++代码里的new保留字作变量名.....
而且这只是其中一个问题,例如再举个例子:
它原来的代码里有这样一行:
#define char *string1=ABC;

在c++里正常应该是:#define char *string="ABC";
离线iiiyyyhhhsss

只看该作者 11楼 发表于: 2009-08-27
如果没有问题的话,有朋友试过把C写的代码在QT里编译成功过吗?
离线cnnbboy

只看该作者 12楼 发表于: 2009-08-27
--无语了,都不知道怎么答了
离线shiroki

只看该作者 13楼 发表于: 2009-08-27
可以把你的C的程序做成个库, 在Qt里去调用. 这样就不用考虑C的任何语法或者编译了.
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线iiiyyyhhhsss

只看该作者 14楼 发表于: 2009-08-27
cnnbboy为什么无语呢?
shiroki的方法可以吗?那么如何做成库呢?希望大家赐教阿....
离线allblue

只看该作者 15楼 发表于: 2009-08-27
shiroki的方法 不错,楼主可以试试(注意交叉编译哦),不过我觉得c语言在qt中是应该能够直接编译的,真的
黑暗魔法
离线shiroki

只看该作者 16楼 发表于: 2009-08-27
qt里确实可以直接调用C的代码. 不过感觉他的C代码比较怪, 也许是版本很老的C代码, 不知道用新版本的gcc能不能编译过去.
如果编译不了的话就得改了.
关于Qt里调C代码, 和普通C++和C的混合编程原理一样, google "C和C++混合编程"
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线iiiyyyhhhsss

只看该作者 17楼 发表于: 2009-08-27
为什么大家都觉得C语言能在QT里直接编译呢?是不是编译器选择的问题,QT用的是什么编译器呢?能不能换一个的?
离线dbzhang800

只看该作者 18楼 发表于: 2009-08-27
引用第17楼iiiyyyhhhsss于2009-08-27 14:02发表的  :
为什么大家都觉得C语言能在QT里直接编译呢?是不是编译器选择的问题,QT用的是什么编译器呢?能不能换一个的?


因为正常的C代码本身就是正常的C++代码,你的问题原本就不存在。。
而你的C代码里竟用new做变量名,不清楚你的C代码的质量了。如果你的C符合C语言的标准,即使用了new,一个全局替换也就解决了。就怕你的C代码本身就不是标准的C代码。
离线shiroki

只看该作者 19楼 发表于: 2009-08-27
因为本来就是可以啊. Qt是标准C++, 而C++的语法兼容C, 在C++里调用标准C的代码没有问题
Qt能支持众多主流的C++编译器, 包括gcc, vc编译器等等
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线iiiyyyhhhsss

只看该作者 20楼 发表于: 2009-08-27
static inline void __list_add(struct list_head *new,
                  struct list_head *prev,
                  struct list_head *next)
{
    next->prev = new;
    new->next = next;
    new->prev = prev;
    prev->next = new;
}


这是linux内核里的找到的...它的参数是一个指针,名字就是new...
[ 此帖被iiiyyyhhhsss在2009-08-27 14:30重新编辑 ]
离线iiiyyyhhhsss

只看该作者 21楼 发表于: 2009-08-27
static char *lib_dir = LIBNETFILTER_CONNTRACK_DIR;

这也是其中一处。

static char *proto2str[IPPROTO_MAX] = {
        [IPPROTO_TCP] =    "tcp",
        [IPPROTO_UDP] = "udp",
        [IPPROTO_ICMP] = "icmp",
       [IPPROTO_SCTP] = "sctp"
};

还有很多莫名奇妙的语句。。。
但是这些在终端里都能编译成功,且程序执行没有问题,但是拿到qt上就不行了
离线shiroki

只看该作者 22楼 发表于: 2009-08-27
这种类型的编译不过简单改改就行了啊. 能用的方案已经有两个了, 你看哪个合适就用哪个, 没必要在C语言的代码能不能在C++里编译这个问题上浪费时间, 这个问题已经有定论了, 再争论也不会对结果有什么影响. 对这个有疑问去搜C/C++混合编程的文章看
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线iiiyyyhhhsss

只看该作者 23楼 发表于: 2009-08-27
恩,我知道啊,这些不是很大的问题,却是很多的问题,很多代码,改起来就麻烦了。
快速回复
限100 字节
 
上一个 下一个