请教大家:BCB和VC,VC6和VC7编译器之间的差异

jingrunx 2003-06-27 04:04:43
我现在有一个模块,是在bcb6下编写的,准备拿到vc6下边去编译,然后集成给其他模块,结果发现两者的编译器有小差异,为了以后少走冤枉路,我想请大家把这两者的差异找出来,以免两边改代码。

http://expert.csdn.net/Expert/topic/1965/1965229.xml?temp=.9727136
...全文
68 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fullsail 2003-06-29
  • 打赏
  • 举报
回复
1.头文件的包含差别没有那么大,

2.用VC.NET 不要用VC6,对C++的支持比较差。这样差异最小。

3.学好用宏屏蔽编译器差异。
MaiCle 2003-06-27
  • 打赏
  • 举报
回复
BCB和VC,VC7至少在用的类库不同,头文件的包含也有很大的区别.等等.....
1cs1ak1 2003-06-27
  • 打赏
  • 举报
回复



写标准代码就没事。
char *p = "haha";
*p = 'a';
编译器执行就不同。


rtdb 2003-06-27
  • 打赏
  • 举报
回复
想到了另一种不规范的代码:

int i=0 ;
printf("%d%d%d%d",i++,i++,i++,i++);
arfi 2003-06-27
  • 打赏
  • 举报
回复
如果代码在不同编译器上结果不同,只能是说编码不规范。这样的编码应尽量避免才对。对于楼上的代码,可能是不同编译器对变量的生命期理解不同。如果不想遵循ANSI c标准将变量声明都放在函数头的话,也可以加大括号来确保其生命期在不同的C++编译器上相同。

void fun(void)
{
...
{
for(int i=0; i<100; i++) {
...
}
}

{
for(int i=200; i<300; i++) {
...
}
}
}
我想这样的话不同的编译器上结果也是相同的。
jingrunx 2003-06-27
  • 打赏
  • 举报
回复
BCB / MSVC7:
for(int i=0; i<100; i++) {
...
}

for(int i=200; i<300; i++) {
...
}

MSVC6:
register int i;
for(i=0; i<100; i++) {
...
}

for(i=200; i<300; i++) {
...
}

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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