关于命名规则、编译和链接的一些细节
背景
在学习过程中,对具体的命名规则有一些深入的了解。
关于编译和链接,看到了一个很好的解释,这里做个记录。
命名规则
我们都知道,名称的规则,这里记录的是,不能命名的规则,以及为什么。
关键字是C++中有特殊含义的保留字,不能把它们用于其他目的。这个大家也都知道,其他不应该使用的名称包括:
(1)以连续两个下划线开头的名称
(2)以一个下划线后跟一个大写字母开头的名称
(3)在全局名称空间内所有以下划线开头的名称
虽然使用了这些名称,编译器通常不会报错,但问题是,这些名称可能与编译器生成的名称冲突,或者与标准库实现在内部使用的名称冲突。
注意,这些名称都具备一个特征:以下划线开头。
因此,我们最好:不要使用以下划线开头的名称。
编译和链接
将源代码转换为可执行文件所需要执行的具体步骤,在各个编译器中是不同的。
但主要过程如下:
如图所示,3个源文件经过编译后,生成3个对应的对象文件。用于标识对象文件的文件扩展名在不同的机器环境中是不同的,这里没有显示。组成程序的源文件可以在不同的编译器运行期间单独编译,但大多数编译器都允许在一次运行期间编译它们。无论采用哪种方式,编译器都把每个源文件看作一个独立的实体,为每个.cpp文件生成一个对象文件。然后在链接步骤中,把程序的对象文件和必要的库函数组合到一个可执行文件中。
关于返回值
对于返回值,有一点需要注意的:
只有在main()函数中,忽略return才相当于返回0。对于其他任何返回值类型为int的函数,最好以一个显式的return语句结束,否则编译器不知道任意函数在默认情况下应该返回哪个值。
关于八进制数
对于八进制数,一定要注意:
(黄金规则)
不要在十进制整数的前面加上前导0,否则会得到另一个值。
比如
1 | 76 是十进制 |