C99标准学习笔记(1)——一些名词解释
本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途。
作者:gfree.wind@gmail.com
博客:blog.focus-linux.net
Side Effect:Accessing a volatile object, modifying an object, modifying a file, or calling a function that does any of those operations are all side effects, which are changes in the state of the execution environment.
我对Side Effect的理解是,任何对于程序状态的改变都是side effect。这个状态为任何对于程序的运行状态。
Sequence Point: At certain specified points in the execution sequence called sequence points, all side effects of previous evaluations shall be complete and no side effects of subsequent evaluations shall have taken place.
前面的side effect已经发生,但后面的side effect还未发生的点,被称为sequence point。
Trigraph Sequence: 下面列出的三个连续字符被称为trigraph sequences,它们会被对应的单字符取代。
??= ————- #
??( ————- [
??/ ------------- \
??) ------------- ]
??’ ————- ^
??< ————- {
??! ————– |
??> ————– }
??- ————– ~
Scope: Scope有4种,function, file, block, and function prototype. Label只能用于一种scope,即函数级scope。也就是说label只能在函数内有效。对于没有storage-class限定符的函数,等于添加了extern的storage-class限定符。对于file scope的object,且没有storage-class限定符,也认为其linkage为extern。在translation unit中,一个identifier如果既被当做internal,又被当做external,那么其行为是没有定义的。
Array Type: An array type describe a contiguously allocated nonempty set objects with a particular member object type, called the element type. Array types are characterized by their element type and by the number of elements in the array.
数组是也是一种类型,它是由数组中元素类型及元素个数来定义其类型的。把数组理解成一种类型,可以解惑很多问题了。这也是大多数教材所欠缺的。
Qualified Type: const, volatile, restrict 为qualifier。带有qualifier和不带qualifier的type为不同的类型,但是相同的表示和对齐需求。