【发布时间】:2011-03-18 09:21:53
【问题描述】:
为什么使用gcc和turbo c这两个编译器编译代码时产生的输出会有差异。
#include <stdio.h>
int main()
{
char *p = "I am a string";
char *q = "I am a string";
if(p==q)
{
printf("Optimized");
}
else{
printf("Change your compiler");
}
return 0;
}
我在gcc 上得到"Optimized",在turbo c 上得到"Change your compiler"。为什么?
【问题讨论】:
-
接受提示;使用 gcc ;-)
-
看到您的问题的答案已经包含在
printf字符串中(顺便说一句,那里缺少\n)我想您确实从某个地方得到了这个代码示例?这是作业吗? -
FWIW,如果你说的是 Borland 的古董编译器,我认为它有一个命令行选项 (
-d) 来合并字符串常量。 -
实际上,Turbo C 是一个相当不错的小型编译器,具有高效的 IDE、平庸的项目管理和可用的调试器。它可以生成漂亮、干净的 .COM 或实模式 .EXE 可执行文件,这很好,因为嵌入式 80x86/ISA 或 PC-104 平台仍在工业应用中使用。如果您仍然需要为 MS-DOS 开发,这是一个了不起的选择。
-
@Luther Blissett:我不认为 OP 需要 为 MS-DOS 开发。问题看起来像家庭作业/初学者的东西。在这种情况下,为新平台生成代码的编译器可能是更好的选择。
标签: c++ c string optimization compiler-construction