C语言容许如下划线开头的函数存在

首先,C++里关于下划线的问题是源于C语言,由于C++容许用extern “C”来修饰代码以C语言语法方式编译。而后说C语言里的下划线:C语言确实容许如下划线开头的函数存在,实际上你用一个下划线开头的函数名或者变量是没问题的,但有可能会发生命名冲突。凡是以两个或一个下划线开始,后面紧跟着一个大写字母的标识符,无论它出如今哪里,都是保留给编译程序或标准库函数使用的。此外,凡是以一个下划线开始,后面无论跟着什么内容的标识符,若是它出如今文件范围内(即它不是出如今一个函数内),那么它也是被保留的。若是你用一个保留的标识符来做一个变量的名称,结果是没有定义的(程序可能没法编译,或者能够编译但会崩溃)。即便你能很是幸运地找到一个目前尚未被你的编译程序或函数库使用的标识符,你也应该记住这样的标识符是保留起来供未来使用的。所以,最好仍是避免使用如下划线开始的变量名或函数名。举例说明:VC里getch函数不是一个标准库函数,所以,它的名字是_getch,大多数编译器都把非标准库、但又是编译器本身提供的库函数如下划线开头。另外,也有编译器的main函数在编译完成之后,名字是_main,若是你本身写了一个函数叫_main,那么编译器可能不知道最终该连接哪一个。因此,你能够理解为:编译器须要预留一些名字,为了方便起见,大多数编译器预留的名字都是如下划线开头的,长此以往就造成了标准。虽然下划线开头也能够用,但不推荐使用,由于容易形成名字冲突。markdown

相关文章
相关标签/搜索