如何根据当前标准检查C源代码?

时间:2010-09-29 01:23:51

标签: c reference specifications c99 standards-compliance

我正在继续学习C并希望坚持现行的标准,但找到一个好的参考似乎是个问题。

我在网上发现的(主要是谷歌和维基百科)是现在使用的标准是C99,更正式地是ISO / IEC 9899:1999标准。

当我编写C代码时,我经常会调出浏览器并进行简单的Web搜索,例如找出stdio.h函数scanf的确切返回值。大多数情况下,我只想进入一个遵守当前标准的良好做法,但即使我搜索特定的字符串“C99 printf”或类似的东西,似乎没有一个地方可以找到一个明确的规范

所以我有两个问题:

1)是否有可在线获取的中央C99规范,由负责此标准的组织维护?

[edit]:这里已经回答了第一个问题:Where do I find the current C or C++ standard documents?。感谢James McNellis指出这一点。

2)是否有程序可以解析C源文件以确保它符合C99规范?我知道有这样的程序来解析XHTML文件,看起来C99也应该有一个......

[编辑]: 我还要提一下,我正在使用gcc进行C开发,特别是版本3.4.4。 当我去主要的gcc网站(http://gcc.gnu.org/)时,我仍然遇到困难,弄清楚哪个编译器版本支持哪个C规范。

4 个答案:

答案 0 :(得分:2)

  

目前的编程标准   语言C是ISO / IEC 9899:1999,   发表于1999-12-01

  

发布ISO和IEC标准即可   从ISO或。的成员机构购买   IEC。

从标准世界中最新的角色ISO开始。

同样值得注意的是,NEXT C标准的草案是available in PDF

答案 1 :(得分:1)

根据您使用的编译器,您可以要求它检查您。例如使用gcc,你会像这样运行它: gcc -Wall -Wextra -pendantic -std = c99 -o program program.c

您当然会将program.c和program替换为您的程序名称。

-Wall和-Wextra提供更多警告,并告诉您是否做了一些时髦的事情。 -pendantic也提供了更多。

你可以使用-ansi如果你真的想亲自遵循ansi规范我不会使用它,因为我很懒,但它更合适。

答案 2 :(得分:1)

实际上无法分析源文件并最终确定它符合C99标准。在这方面,C与XHTML不同,因为C是图灵完备语言而XHTML不是。

当然可以找到许多不合格的实例,但是找不到它们是不可能的。例如,考虑一个即时生成printf格式字符串的程序 - 您如何静态地确定格式字符串是否符合要求?如果它取决于给予程序的输入怎么办?还要考虑一个右移有符号整数的程序 - 如果有问题的有符号整数从不为负数,那么程序可能符合要求,但如果没有,那么它可能依赖于实现定义的结果。

答案 3 :(得分:0)

草稿可以免费获得here。您也可以从the ansi store购买官方的。