gcc g++ 在编译时对代码检查的严格程度不一样?

qmm161 2007-08-17 12:00:40
手上有一个工程,本来都是.c的,gcc编译没有问题,后来要改成.cpp的文件,编译的时候出来一堆编译错误!
什么指针类型不匹配之类的,居然也算error。

最离奇的是,有一个.h文件,定义了很多全局变量,然后很多文件都include这个文件,在用gcc编译的时候没问题,到g++时则拼命报 multi-defination 的错误,为什么gcc没有发现这种问题,到g++的时候就发现了呢?而且用VC++6.0编译也没有报错!难不成这种定义方式是允许的?

照这样推理的话,g++是不是也可以通过什么选项来让他不这么严格?

=================
小弟初来乍到,不知道给分是什么意思,似乎也没分可给,只有一颗好学的诚心,希望大家本着国际共产主义的精神,给我一个小小的回复!
...全文
460 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qmm161 2007-08-20
  • 打赏
  • 举报
回复
不过我觉得c的语法也很严格阿,应该还是编译器的问题吧!

而且应该也不是楼上提到的问题,那种方式只是为了防止头文件被反复包含的嘛!
mymtom 2007-08-18
  • 打赏
  • 举报
回复
C与C++是不一样的,C++的语法严格的多。
hilary0810 2007-08-18
  • 打赏
  • 举报
回复
对每个.h文件这样定义
#ifndef XXXXX
#define XXXXX


#endif
qmm161 2007-08-17
  • 打赏
  • 举报
回复
thank you , thank you all
qmm161 2007-08-17
  • 打赏
  • 举报
回复
eg:
/////// header.h /////////
int ivalueA; //globle value A
int ivalueB; //globle value B
....


/////// file_a.c /////////
#include "header.h"
.......

/////// file_a.c /////////
#include "header.h"
.......

按道理来说头文件中应该不要定义变量才对,可是这里居然可以定义全局变量,用 gcc vc++6.0 编译都能过!
fjpqzm 2007-08-17
  • 打赏
  • 举报
回复
能不能具体举个例子

23,107

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧