用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 请各位指点,谢谢。
...全文
131 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自己扩展的,所以出现这一问题并不奇怪。
各种编译器之间的不兼容现象是很常见的,因为各自的扩展以及库函数设计等都有所不同。
没有看到你的源代码,不好进一步说了。

64,281

社区成员

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

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