打印

结贴!学术成了骂娘了,没劲return也能返回

[复制链接]
楼主: wwwq
手机看帖
扫描二维码
随时随地手机跟帖
41
voidx| | 2009-12-13 09:33 | 只看该作者 回帖奖励 |倒序浏览
本帖最后由 voidx 于 2009-12-13 09:38 编辑
一个好的编译器是应该从用户角度出发的。各位可以试试realview中的FOR语句设计,所有变量均要在函数的前面声明。总之没必要迷信这些国外公司,国内的编译器虽然落后,但也不是别人的就好的不得了。 ...
wwwq 发表于 2009-12-13 09:19


楼主的话不同意。
编译器应该安标准来,在标准的基础上(不破坏原先的标准)加上适当扩展。
而不是想怎么样,就怎么样。


realview用C99标准就可以。
IAR也可以。

for(int i=0;i<100;i++)
{

}

使用特权

评论回复
42
wwwq|  楼主 | 2009-12-13 09:43 | 只看该作者
main()
{
int a=8;
int b=0;
b=a;
b=add(a,b);
a=a+b;
for (int i=0;i<=10;i++)
{
  a=i;
}

}

testnormal.c(8): error:  #20: identifier "i" is undefined
请楼上运行一下。

使用特权

评论回复
43
wwwq|  楼主 | 2009-12-13 09:44 | 只看该作者
我们正在设计一个编译器,所以要先了解目前的编译器情况

使用特权

评论回复
44
香水城| | 2009-12-13 09:46 | 只看该作者
不用测试都可以看出,42楼的程序显然不符合ANSI C规范的要求!这个问题与楼主位提出的问题完全是2回事,不知道楼主在此提出这个问题的用意是什么?

使用特权

评论回复
45
wwwq|  楼主 | 2009-12-13 09:54 | 只看该作者
42楼是符合规范的,请香版主看看规范
我在此提出这个问题就是想找高手,尤其是编译器设计的高手。
硬件应用是个较为简单的问题,编译器是核心,国内目前空白,通过我们的工作,国外产品也是有缺陷的。同样是C编译器,比较一下VC和realview,这两个的差别就是太大了。
重申一下:我们不是做广告来了,仅仅是学术探讨,香版主,研讨会时,我见过你,不必紧张。

使用特权

评论回复
46
lxyppc| | 2009-12-13 12:19 | 只看该作者
问楼主一句
你(们)的编译器打算支持哪些标准?还是只支持一个标准?
我不明白在当今大多数编译器都能由用户选择标准(规范)的时候你为何还是死盯着一个规范不放

还老拿这个来说是别人的缺陷?

使用特权

评论回复
47
wwwq|  楼主 | 2009-12-13 13:24 | 只看该作者
楼上的请指点,你知道的还有哪些规范,那个编译器可以让用户自己选择规范,这个我还真没听说过?

使用特权

评论回复
48
lxyppc| | 2009-12-13 14:51 | 只看该作者
在IAR下
可以通过选项支持一些C99或C++的规范
下面是IAR 4.42帮助中的文字

C language extensions
This section gives a brief overview of the C language extensions available in the ARM
IAR C/C++ Compiler. The compiler provides a wide set of extensions, so to help you to
find the extensions required by your application, the extensions have been grouped
according to their expected usefulness. In short, this means:
● Important language extensions—extensions specifically tailored for efficient
embedded programming, typically to meet memory restrictions
Useful language extensions—features considered useful and typically taken from
related standards, such as C99 and C++

● Minor language extensions, that is, the relaxation of some minor standards issues
and also some useful but minor syntax extensions.

使用特权

评论回复
49
dfsa| | 2009-12-13 15:56 | 只看该作者
开发编译器,有前途

使用特权

评论回复
50
sinadz| | 2009-12-13 16:28 | 只看该作者
自己做编译器,不是很容易

使用特权

评论回复
51
wwwq|  楼主 | 2009-12-13 18:33 | 只看该作者
谢谢 lxyppc ,不过c++的实现是编译器的一个重要工作,但对于嵌入式系统,会使代码非常庞大,效率比较低下。
IAR我们正在测试,不过ansi c的标准是大家公认的,c99则不然。我们讨论的问题是任何一个规范都不允许的。

使用特权

评论回复
52
香水城| | 2009-12-13 20:14 | 只看该作者
本帖最后由 香水城 于 2009-12-13 20:23 编辑
42楼是符合规范的,请香版主看看规范
......
重申一下:我们不是做广告来了,仅仅是学术探讨,香版主,研讨会时,我见过你,不必紧张。
wwwq 发表于 2009-12-13 09:54


我对楼主在45楼的最后一句话提出异议,即然是一个学术讨论帖子,我为什么要紧张?这里讨论的编译器既不是ST的产品,也不是专门为ST的产品而设计的,你这样的说法不是亵渎了这里的讨论气氛吗?

关于42楼的程序符合规范的问题,我有两点说明:
1)目前我手头没有C语言的标准文本,无法验证你的说法,如果方便的话,请上载一份供研究。
2)从我学习C语言的第一天起,我就知道函数中局部变量的定义和声明必须在所有运算语句之前,不能放在运算语句之间,或者说任何局部变量的定义和声明之前不能有任何运算语句,对变量的初始化语句除外。

使用特权

评论回复
53
wwwq|  楼主 | 2009-12-13 20:32 | 只看该作者
2)从我学习C语言的第一天起,我就知道函数中局部变量的定义和声明必须在所有运算语句之前,不能放在运算语句之间,或者说任何局部变量的定义和声明之前不能有任何运算语句,对变量的初始化语句除外。

我学的很早,但像for(int i=0;i<=10;i++)是在realview中发现出错的。
不要用什么亵渎,每个产品都是产品,都会出错的,也会有bug的。国内教育的结晶就是让广大学生认为国外的产品如Labview,matlab等是科学而非产品,这样绝谈不到什么创新。
ST的产品好?还记得我在研讨会,问你st的uinique ID量产如何实现的问题吗?什么产品都有不足,国外产品较好,但不等于神圣不可质疑。

使用特权

评论回复
54
香水城| | 2009-12-13 20:49 | 只看该作者
本帖最后由 香水城 于 2009-12-13 21:11 编辑

既然是学术探讨,那么你为什么认为我会紧张呢?什么东西会令我紧张?

使用特权

评论回复
55
lxyppc| | 2009-12-13 23:58 | 只看该作者
谢谢 lxyppc ,不过c++的实现是编译器的一个重要工作,但对于嵌入式系统,会使代码非常庞大,效率比较低下。
IAR我们正在测试,不过ansi c的标准是大家公认的,c99则不然。我们讨论的问题是任何一个规范都不允许的。 ...
wwwq 发表于 2009-12-13 18:33


的确
这里编译器让其通过,我个人觉得其实是他对市场作的一个妥协
因为作为一个产品,当然是能兼容越多的东西越好

但是这个不应该成为诟病的目标
楼主如想做一个能超越现有编译器的编译器,还是不要拘泥于标准
因为现在很多的用户已经习惯现在这种扩展的方式了
我希望你的编译器能正确编译现有的大部分代码,而不是对现有的代码作一个ANSI C规范检测,然后报出一堆的错误

使用特权

评论回复
56
wwwq|  楼主 | 2009-12-14 06:49 | 只看该作者
谢谢楼上,编译器这东西太复杂,我们近10人,3年了,才刚进入大测试阶段,主要针对Ti的DSP,好复杂,工程问题比理论复杂多了,现在的情况是**一篇也不想写,经验值钱啊。

使用特权

评论回复
57
xwj| | 2009-12-14 08:26 | 只看该作者
很明显,LZ只是为了操作一下,顺便宣扬下他做的编译器多么的好。

使用特权

评论回复
58
yewuyi| | 2009-12-14 08:35 | 只看该作者
2)从我学习C语言的第一天起,我就知道函数中局部变量的定义和声明必须在所有运算语句之前,不能放在运算语句之间,或者说任何局部变量的定义和声明之前不能有任何运算语句,对变量的初始化语句除外。

我学的很早, ...
wwwq 发表于 2009-12-13 20:32


强烈怀疑你实际用过几种编译器?

for(int i=0;i<=10;i++)在IAR、HITECH FOR PIC等等下都会出错,而不仅是你的KEIL 。。。

你不妨测试一下再上来发表意见。

使用特权

评论回复
59
aozima| | 2009-12-14 08:48 | 只看该作者
谢谢楼上,编译器这东西太复杂,我们近10人,3年了,才刚进入大测试阶段,主要针对Ti的DSP,好复杂,工程问题比理论复杂多了,现在的情况是**一篇也不想写,经验值钱啊。 ...
wwwq 发表于 2009-12-14 06:49

早想到他是做编译器的了,或别个编译器的代理商.
想抬高自己也不用贬低别人嘛!

使用特权

评论回复
60
wwwq|  楼主 | 2009-12-14 09:07 | 只看该作者
我们是高校研究,而非是商业,当然最后能否商业是老师的事。
楼上的,我们没有贬低别人,只是想遇到高手看看有没有人能聊聊,毕竟国内做编译器的人太少了,在校的学生已经把学会使用别人的产品当成科学了,我们的基础平台工作太差了,甚至大部分学生认为那时国内不可能做的了,学会一种,找个工作。至于您怎么想,我们能理解。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则