c标准
developerWorks 中国 > Linux > 用 C99 进行开放源代码的开发您的 C 代码符合标准吗? 文档选项 打印本页 将此页作为电子邮件发送 级别: 初级 Peter Seebach (developerworks@seebs.plethora.net), 自由作家 2004 年 4 月 01 日 C99 是什么?谁需要它?它可用了吗?Poter Seebach 讨论了 ISO C 标准的 1999 年修订版,着重于 Linux 和 BSD 系统上新特性的可用性。开放源代码操作系统所带的 gcc 发行版本并不支持 C99 的所有新特性,不过现在已经有足够多的新特性普遍可用,因此有理由开始认真考虑在新的开发中采用 C99 特性,尤其是用在它们使得效率和清晰度本质上发生变化的那些地方。 本文回顾了近来发布的 Linux 和 BSD 上的 C99 语言和库特性的可用性。由于这些特性很多是 gcc 的标准特性,所以新版本的 gcc 在大部分其他平台上可以做同样的事情。当然,各个发行版本或者各个 OS 之间的库支持是不同的。 以语言标准调用 gcc GNU C 编译器支持许多不同版本的 C 编程语言。可以在命令行上通过 -std 选项来选择所使用的 C 标准的版本。默认选择的不是任何版本的标准,而是“GNU C”语言,这门语言有其自己的扩展集。 C 标准的常见版本用下面的选项选择: C-ninety-what? C99 标准是 ISO C 标准的最新修订版本。或许应该先介绍一些历史背景。在早期,C 语言的开发没有组织,经历了很多变化。最后,大部分厂家都接受了 Kernighan 和 Ritchie 的 The C Programming Language 第一版 (1978) 中描述的语言,但是扩展还是司空见惯。ANSI 开始致力于基于此书和现有实际应用之上的标准,到 1989-1990 时,一个标准得到了广泛的使用。这个标准就是广泛流传的“C89”;有些人戏称在 K&R 的 1978 版中描述的语言为“C78”。在接下来的十年,编译器厂商不断开发新扩展和新特性,并在 1999 年发布了修订的标准,这个标准描述了多年来所做的对众多最有用和广为支持的新特性所进行的标准化工作。这个标准经常被叫做“C99”标准。 -std=c89 或 -std=iso9899:1990 最初的 C89 标准 -std=iso9899:199409 C89,增加了 Normative Addendum 1 的变化 -std=c99 or -std=iso9899:1999 C99 修订版标准 使用 -pedantic 选项来强制遵从某个版本的标准。这个选项主要用于设法确保您的代码迁移到其他编译器时仍可用;例如,如果您正在与不使用 gcc 的人共享一个代码库 (codebase),您可能希望它在任何时候都能用。注意, -ped
相关文档:
package zzq.main;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
/************************************************************************
* C语言趣味程序(不到)百例-之Java实现
*
* 0 ......
1.求下面函数的返回值(微软)
int func(x)
{
int countx = 0;
while(x)
{
countx
++;
x = x&(x-1);
}
return countx;
}
假定x = 9999。 答案:8
思路:将x转化为2进制,看含有的1的个数。
2. 什么是“引用”?申明和使用“引用”要注意哪些问题?
答:引用就是某个目标变量的&l ......
C/S模式和B/S模式的区别
。。。。。。。。。。。。。。。。。。。。。。。。。。。
~~什么是B/S模式
B/S模式,即浏览器/服务器模式,是一种从传统的二层CS模式发展起来的新的网络结构模式,其本质是三层结构C/S模式。B/S网络结构模式是基于Intr ......
操作函数,所在函数库为string.h、mem.h
mem…操作存贮数组
void *memccpy(void *destin,void *source,unsigned char ch,unsigned n)
void *memchr(void *s,char ch,unsigned n)
void *memcmp(void *s1,void *s2,unsigned n)
int memicmp(void *s1,void *s2,unsigned n)
void *memmove(void *destin ......