ansi编译器
① 编译器不符合ANSI C++规范的部分的表现是什么
一般是指“原本该通过编译的 没有 通过编译”
比如最常见的不符合ANSI C++规范的编译器是vc6
这么写
for (int i = 0; i < 100; i++) {
...
}
for (int i = 0; i < 10; i++) {
...
}
编译就不通过
而C99标准是支持这样的定义的。vc6默认的i的生命周期和C99标准不一样,导致编译不通过,认为后一个i是重复定义了
而一般编译器都有“原本 不 该通过编译的 通过编译了”的情况
那是因为某些原因对标准C做了扩展
比如GCC就有很多扩展(语句表达式,可变参数宏,等等)
这些扩展是ANSI C++里面没有的,却在linux内核代码里面扮演重要的角色
编译器的扩展增大了各编译器之间的差异,降低了某些源代码的可移植性
不过现在vc2008做的不错了,比较符合最新的标准C规范
所以建议写代码的时候,如果没有必要,最好遵守标准C规范
网上可以找到ANSI C的yacc语法文件,你可以研究下(不懂yacc的就看bison帮助文档)
-----------------------------------------
以上内容为本人原创,谢谢
② 急,谁能告诉我ANSI / ISO C++编译器是什么东东
ANSI / ISO是一个标准
美国国家标准协会。由公司、政府和其他成员组成的自愿组织。它们协商与标准有关的活动,审议美国国家标准,并努力提高美国在国际标准化组织中的地位。此外,ANSI使有关通信和网络方面的国际标准和美国标准得到发展。ANSI是IEC和ISO的成员之一。
American National Standards Institute(ANSI——美国国家标准局)
ANSI是一个准国家式的标准机构,它为那些在特定领域建立标准的组织提供区域许可,如电气电子工程师协会(IEEE)。这个词也常常用来表示计算机使用的低级代码表。
ANSI是国际标准化委员会(ISO)和国际电工委员会(IEC)5个常任理事成员之一,4个理事局成员之一,参加79%的ISO/TC的活动,参加89%的IEC/TC活动。ANSI 是泛美技术标准委员会(COPANT)和太平洋地区标准会议(PASC)的成员。
ANSI成立于1918年,原名是美国工程标准委员会(American Engineering Standards Committee;AESC),1928年改名为美国标准协会(American Standards Association; ASA),1966年改名为美国标准学会(America Standards Institute;USASI),1969年正式改为现名美国国家标准学会(American National Standards Institute, ANSI)。
美国国家标准学会是非赢利性质的民间标准化组织,是美国国家标准化活动的中心,许多美国标准化学协会的标准制修订都同它进行联合,ANSI批准标准成为美国国家标准,但它本身不制定标准,标准是由相应的标准化团体和技术团体及行业协会和自愿将标准送交给ANSI批准的组织来制定,同时ANSI起到了联邦政府和民间的标准系统之间的协调作用,指导全国标准化活动,ANSI 遵循自愿公、公开性、透明性、协商一致性的原则,采用3种方式制定、审批ANSI标准。
关于ansi编码:
unicode和ansi都是字符代码的一种表示形式。
为使计算机支持更多语言,通常使用 0x80~0xFF 范围的 2 个字节来表示 1 个字符。比如:汉字 '中' 在中文操作系统中,使用 [0xD6,0xD0] 这两个字节存储。
不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。
不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。
ANSI英文全称: American National Standards Institute.中文名称:美国国家标准协会。
ANSI成立于1918年,原名是美国工程标准委员会(American Engineering Standards Committee;AESC),1928年改名为美国标准协会(American Standards Association; ASA),1966年改名为美国标准学会(America Standards Institute;USASI),1969年正式改为现名美国国家标准学会(American National Standards Institute, ANSI)。
美国国家标准学会是非赢利性质的民间标准化组织,是美国国家标准化活动的中心,许多美国标准化学协会的标准制修订都同它进行联合,ANSI批准标准成为美国国家标准,但它本身不制定标准,标准是由相应的标准化团体和技术团体及行业协会和自愿将标准送交给ANSI批准的组织来制定,同时ANSI起到了联邦政府和民间的标准系统之间的协调作用,指导全国标准化活动,ANSI 遵循自愿公、公开性、透明性、协商一致性的原则,采用3种方式制定、审批ANSI标准。
ANSI是国际标准化委员会(ISO)和国际电工委员会(IEC)5个常任理事成员之一,4个理事局成员之一,参加79%的ISO/TC的活动,参加89%的IEC/TC活动。ANSI 是泛美技术标准委员会(COPANT)和太平洋地区标准会议(PASC)的成员。
③ 编译安装apache 需要什么环境
编译Apache的要求如下:
磁盘空间
必须保证有50MB以上的自由临时磁盘空间。Apache安装完毕后会占据10MB左右的空间,实际的磁盘空间需求会因编译设置和是否安装第三方模块而有所不同。
ANSI-C编译器及编译环境
必须装有ANSI-C编译器,推荐使用自由软件基金会(FSF)的GCC。如果没有GCC,那么要确保使用的编译器符合ANSI标准,而且PATH中必须包含指向基本编译工具比如make的路径。
确保准确的时间
由于HTTP协议的元素都会用到时间,有必要了解一下你的系统所使用的时间同步机制。在基于网络时间协议(NTP)的系统中,一般是用ntpdate或xntpd来同步时间。有关NTP软件的资料请参见NTP主页。
Perl 5 [可选]
有些用Perl写的支持脚本,如apxs或dbmmanage ,需要Perl5解释器(5.003或以上的版本就足够了)。如果系统中存在多个Perl解释器,比如有系统提供的Perl 4,还有你自己安装的Perl 5,推荐你使用 --with-perl 选项来确保configure脚本使用正确的版本。如果configure没有没找到Perl 5也没关系,这并不影响Apache httpd的编译和安装,只是相关的支持脚本不能使用而已。
apr/apr-util >= 1.2
apr和apr-util包含在Apache httpd的发行源代码中,并且在绝大多数情况下使用都不会出现问题。当然,如果apr或apr-util的1.0或1.1版本已经安装在你的系统中了,则必须将你的apr/apr-util升级到1.2版本,或者将httpd单独分开编译。要使用发行源代码中自带的apr/apr-util源代码进行安装,你必须手动完成:
# 编译和安装 apr 1.2
cd srclib/apr
./configure --prefix=/usr/local/apr-httpd/
make
make install
# 编译和安装 apr-util 1.2
cd ../apr-util
./configure --prefix=/usr/local/apr-util-httpd/ --with-apr=/usr/local/apr-httpd/
make
make install
# 配置 httpd
cd ../../
./configure --with-apr=/usr/local/apr-httpd/ --with-apr-util=/usr/local/apr-util-httpd/
④ 纯粹的ansi编译器是什么意思
ANSI:美国国家标准学会标准;指螺丝执行ANSI美国国家标准学会标准。高级加密标准(AES) 是美国标准与技术研究院针对电子数据的加密所制定的规范。仅供参考。
⑤ Linux操作系统中默认安装的C语言编译系统是
Linux操作系统中默认安装的C语言编译系统是GCC(GNU Compiler Collection),是Linux下最常用的C语言编译器,是GNU项目中符合ANSI,C标准的编译系统,能够编译用C、Object C等语言编写的程序。
同时它可以通过不同的前端模块来支持各种语言,如Java、Fortran、Pascal、Mola,3和Ada等。
C语言的标准
1.1 K,RC
1973年,Dennis M Ritchie设计和实现了C语言,从那以后使用者逐渐增加。
1978年,Kernighan 和 Ritchie 合着了《The C Programming Language》,这本书定义的C语言被称为 K,RC 。
1.2 标准 C
随着C语言使用日益广泛,出现了许多新问题,人们迫切希望对C语言进行标准化。
第一个标准:C89
1983年,ANSI成立了一个委员会X3J11,对C语言进行标准化。
1989年,ANSI 批准了第一个C语言标准 X3,159-1989,并于1990年公布,被称为 ANSIC、C89 或 C90。
1990年,这个标准又被批准为ISO标准:ISO,IEC 9899:1990 。
ANSIC标准被ISO采纳,并且ISO发布的修订版也被ANSI采纳,因此ANSI标准和ISO标准实际上没有技术区别。这些名称的含义是相同的:ANSI C、ISO C、标准C。
1994年和1996年,ISO发布了两个技术更正,更正了1990ISOC标准中的错误。
第二个标准:C94
1995年,ISO发布了1990ISOC标准的一个补充,称为AMD1。扩充后的标准被称为C94或C95。
第三个标准:C99
1999年,ISO发布了一个新版本的ISOC标准:ISO,IEC9899:1999,称为C99。
2001年、2004年和2007年,ISO发布了三个技术更正,更正了1999ISOC标准中的错误。
第四个标准:C11
2011年,ISO发布了一个新版本的ISOC标准:ISO,IEC9899:2011,称为C11。C11 是 C语言的最新标准。
1.3 GNUC
1984年,Richard Stallman 发起了GNU计划,它的目标是开发一个完整且自由的Unix-like操作系统(GNU系统)。
GNU系统是一个完整的操作系统,包括操作系统内核和各种工具软件。各种GNU系统的变种(例如Redhat、Ubuntu等)已经被广泛使用,它们使用的操作系统内核都是Linux。虽然这些系统经常被称为Linux,但准确地说,它们是GNU/Linux系统。
GNU在编写Linux时扩展了标准C,称为GNUC。
GNU C的扩展详见:Extensions to the C Language Family
GNU C也称为Linux C,一般用于Linux上的开发,而标准C可以跨平台。
GNU C使用的编译器是GCC。
⑥ ANSI C标准的主要编译器的支持
ANSI C现在被几乎所有广泛使用的编译器支持。现在多数C代码是在ANSI C基础上写的。任何仅仅使用标准C并且没有任何硬件依赖假设的代码实际上能保证在任何平台上用遵循C标准的编译器编译成功。如果没有这种预防措施,多数程序只能在一种特定的平台或特定的编译器上编译,例如,使用非标准库,例如图形用户界面库,或者有关编译器或平台特定的特性例如数据类型的确切大小和字节序.
[编辑]选择编译 为了减轻K&R C和ANSI C标准,__STDC__(standard c)宏可以被用来将代码分割为ANSI和K&R部分。
#if __STDC__
externint getopt(int,char*const*,constchar*);
#else
externint getopt();
#endif
上面最好使用#if __STDC__而不是#ifdef __STDC__,因为一些实现可能会把 __STDC__设置为0来表示不遵循ANSI C。__STDC__能处理任何没有被宏替换或者值为0的标示符。因而即使宏__STDC__没有定义来表示不遵循ANSI C,__STDC__仍然能像显示的那样工作。
在上面的例子,一个原型中使用了ANSI实现兼容的函数声明,而另一个使用了过时的非原形声明。它们在C99和C90中依旧是ANSI兼容的,但并不被鼓励使用。