ANSI C

1、编译器的限制:

  • 函数的形参数量上限是31个;
  • 函数调用时实参数量上限31个;
  • 一条源代码行里至少可以有509个字符;
  • 表达式至少可以支持32层嵌套;
  • long int最大值不得小于32位。
2、ANSI的标准结构,包括介绍、环境、c 语言、C运行库。

foo(const char **p){}
main( int argc,char**argv)
{
foo(argv);
}
编译代码会有一个警告信息:argument is incompatible with prototype。
ANSI中有这样一段话:
【每个实参都应该具有自己的类型,这样它的值就可以赋值给与它所对应的形参类型的对象(改对象的类型不能包含有限定符)】
【两个操作数都是指向有限定符或是无限定符的相容类型的指针,左边的指针所指向的类型必须具有右边指针所指向类型的全部限定符】
在函数调用时实参char*能与形参const char*匹配。比如
char *p; const char* ccp;
使用ccp = p;无警告信息;但是如果使用p= ccp则会产生警告。
3、类型转换:
当执行算术运算时,操作数的类型如果不同,就会发生转换,数据类型一般朝着浮点精度更高、长度更长的方向转换,整数型如果转换位singed不会丢失信息,就转换位signed,否则转换位unsigned。
尽量不在代码中使用无符号类型,使用有符号型,在涉及升级混合类型的复杂细节时,不必担心边界情况(-1被译为非常大的正数),只有在使用位段或是二进制掩码时,才可以使用无符号数。应该在表达式中使用强制类型转换,不必由编译器来选择结果类型。

4、#pragma,产生一个由编译器定义的状态或是指定编译器完成一些动作。,GNU C预处理器中,一旦遇到#pragma,就会试图运行“rogue“游戏,总之预处理过程不会继续进行。
  • 一般为#pragma PARA, 常用的由#pragma message 
#ifdef _X86
   #Pragma message(“_X86 macro activated!”)
   #endif
  • #pragma code_seg( ["section-name"[,"section-class"] ] )
  • #pragma waring
  • 使用指令#pragma pack (n),编译器将按照n 个字节对齐。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值