用dev-c++4.9.8.3老是显示“invalid option `-std=c89'”错误,这是什么回事呢?

msdner 2003-10-09 02:53:19

invalid option `-std=c89'

程序是没有错的,VC下通过,会不会是编译器坏了?可是,我重装了好几遍了。
我用的是最新版的dev-c++4.9.8.3 请各位指点,谢谢。
...全文
133 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
msdner 2003-10-09
  • 打赏
  • 举报
回复
谢谢 fifo333(维特比),感觉好多了。
fifo333 2003-10-09
  • 打赏
  • 举报
回复
//tt_C99.c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <math.h>

//#include <complex.h> NOT support

void proc1()
{
// boolean type support
_Bool st;
int a=5,b=3;
st=a<b;
if(st){
printf("minimum is:%d\n",a);
}
else{
printf("minimum is:%d\n",b);
}
int size=sizeof(st);
printf("size of a boolean:%d\n",size);
puts("");

}

void proc2(const int dim1,const int dim2)
{
// variable length array support
int matrix[dim1][dim2];
int i,j;
for(i=0;i<dim1;++i){
for(j=0;j<dim2;++j){
matrix[i][j]=i*dim2+j+1;
}
}
for(i=0;i<dim1;++i){
for(j=0;j<dim2;++j){
printf("%d ",matrix[i][j]);
}
puts("");
}
puts("");

}

void proc3()
{
//support byte-size, but have some problem
long long int LLint=2147483647; //9223372036854775807;
LLint=LLint;
long int Lint=-2147483647;
printf("%ld\n",LLint);
printf("%ld\n",Lint);
long sizeLL=sizeof(LLint);
long sizeL=sizeof(Lint);
printf("%ld %ld\n",sizeLL,sizeL);
puts("");

}

int main()
{
proc1();
proc2(3,4);
proc2(7,10);
proc3();

system("pause");
return 0;

}
fifo333 2003-10-09
  • 打赏
  • 举报
回复
to msdner() :单行注释是可以的,你打开了Support all ANSI standard C programs这个选项了吧。将C complier中的选项都设为No就可以了。
此外,变量可以随意位置定义(除了循环条件如for(...;...;...;)中定义等)。
现在还没有什么编译器完全支持C99,据说Borland C++ BuilderX中将完全支持,但看了techview后也表示怀疑。
能支持一部分就不错了,总要有个过程嘛。
to msdner() :我觉得两个版本都不错,但是4.9.8.3更慢了一些。由于编译器实际没有变化,我觉得这个版本主要是IDE的修正更新,实质是一样的。
msdner 2003-10-09
  • 打赏
  • 举报
回复
to fifo333(维特比):你觉得dev-c++4.9.8.0好还是dev-c++4.9.8.3好?
msdner 2003-10-09
  • 打赏
  • 举报
回复
还是不支持C99,单行注释不支持,气人。
fifo333 2003-10-09
  • 打赏
  • 举报
回复
dev-c++4.9.8.0部分支持C99,我试过,动态数组可以(函数中运行期指定数组维数),布尔类型都可以,但是复数没试出来,restrict没试出来,long long int的字节数是8,但是最大值还没试出来。
erfc()函数是支持的,这个函数在通信中很有用。
msdner 2003-10-09
  • 打赏
  • 举报
回复
哦,原来和dev-c++4.0 的设置不一样,我去掉"attempt to support some asptects of raditional C pre"选项以后,没出这个错误了,好奇怪的设置。也没有调试的信息。
msdner 2003-10-09
  • 打赏
  • 举报
回复
dev-c++4.9.8.0 支持C99吗?
fifo333 2003-10-09
  • 打赏
  • 举报
回复
//hello_world.cpp
#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
cout<<"Hello World!"<<endl;

system("pause");
return 0;

}


/*hello_world.c*/
#include <stdio.h>
#include <stdlib.h>

int main()
{
printf("Hello World!\n");
puts("Hello World!");

system("pause");
return 0;

}

我试了这两个程序,没问题。
实在不行,你重新安装一下吧。
可以看看tools->complier options->setting中的设置。
pengliyong 2003-10-09
  • 打赏
  • 举报
回复
你为是不是指定用c89标准编译呢,vc是支持C++的。
看看你的compile option里有没有 -std=c89 ,把它删掉。
msdner 2003-10-09
  • 打赏
  • 举报
回复
to fifo333(维特比) :为了验证一下,我用最简单的程序(hello,world),都出现这个错误的。不知道是哪里出了差错。
fifo333 2003-10-09
  • 打赏
  • 举报
回复
可能你使用了与标准不兼容的特性,是C89标准不允许的。
由于ms的vc编译器(6.0以下,据说.net好多了)并不严格符合标准,其多还有许多是ms自己扩展的,所以出现这一问题并不奇怪。
各种编译器之间的不兼容现象是很常见的,因为各自的扩展以及库函数设计等都有所不同。
没有看到你的源代码,不好进一步说了。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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