1. 程式人生 > >C語言允許以下劃線開頭的函式存在

C語言允許以下劃線開頭的函式存在

首先,C++裡關於下劃線的問題是源於C語言,因為C++允許用extern “C”來修飾程式碼以C語言語法方式編譯。然後說C語言裡的下劃線:C語言確實允許以下劃線開頭的函式存在,實際上你用一個下劃線開頭的函式名或者變數是沒問題的,但有可能會發生命名衝突。凡是以兩個或一個下劃線開始,後面緊跟著一個大寫字母的識別符號,不管它出現在哪裡,都是保留給編譯程式或標準庫函式使用的。此外,凡是以一個下劃線開始,後面不管跟著什麼內容的識別符號,如果它出現在檔案範圍內(即它不是出現在一個函式內),那麼它也是被保留的。如果你用一個保留的識別符號來作一個變數的名稱,結果是沒有定義的(程式可能無法編譯,或者可以編譯但會崩潰)。即使你能非常幸運地找到一個目前還沒有被你的編譯程式或函式庫使用的識別符號,你也應該記住這樣的識別符號是保留起來供將來使用的。因此,最好還是避免使用以下劃線開始的變數名或函式名。舉例說明:VC裡getch函式不是一個標準庫函式,因此,它的名字是_getch,大多數編譯器都把非標準庫、但又是編譯器自己提供的庫函式以下劃線開頭。另外,也有編譯器的main函式在編譯完成以後,名字是_main,如果你自己寫了一個函式叫_main,那麼編譯器可能不知道最終該連結哪個。所以,你可以理解為:編譯器需要預留一些名字,為了方便起見,大多數編譯器預留的名字都是以下劃線開頭的,久而久之就形成了標準。雖然下劃線開頭也可以用,但不推薦使用,因為容易造成名字衝突。

相關推薦

C語言允許以下劃線開頭函式存在

首先,C++裡關於下劃線的問題是源於C語言,因為C++允許用extern “C”來修飾程式碼以C語言語法方式編譯。然後說C語言裡的下劃線:C語言確實允許以下劃線開頭的函式存在,實際上你用一個下劃線開頭的函式名或者變數是沒問題的,但有可能會發生命名衝突。凡是以兩個

C++】關於以下劃線開頭的變數名

系統標頭檔案裡將巨集名、變數名、內部函式名用"_"開頭就是為了避免與使用者用的名字衝突。因為當你#include 系統標頭檔案時,這些檔案裡的名字都有了定義,如果與你用的名字衝突,就可能引起各種奇怪現象。換句話說:我們寫程式時一定不要用"_"開頭的名字,以免與系統標頭檔案

一起talk C栗子吧(第九十六回:C語言實例--使用共享內進行進程間通信二)

class mar net 表示 func clas ber 數字 標記 各位看官們。大家好,上一回中咱們說的是使用共享內存進行進程間通信的樣例,這一回咱們接著上一回內容繼續說使用共享內存進行進程間通信。閑話休提,言歸正轉。讓我們一起talk C栗子

平方根的C語言實現(一) —— 浮點數的

調整 進制 print 十進制 項目 inf 十分 變量 -1   曾經做一個硬件成本極度控制的項目,因為硬件成本極低,並且還需要實現較高的精度測量,過程中也自己用C語言實現了正弦、余弦、反正切、平方根等函數。   以下,無論是在我的實際項目中還是本地的計算機系統,int都

C語言學習系列(六)儲類

amp 限制 () 存儲 col print strong .com 學習 一、C存儲類 存儲類定義C程序中變量/函數的範圍(可見性)和生命周期。這些說明符放置在他們所修飾的類型之前。for example:auto、register、static、extern。 (一)、

散分+快來報名“C語言指針與匯編內地址(二)”公開課

公開 lan shuf target dsd blank dmg userinfo gin iR歡2kaq崖居止40攘http://www.docin.com/app/user/userinfo?userid=179252984 Qsgb5V1仗mchttp://t.doc

C語言編程程序的內怎樣布局

計算機系統 bbs 數據類型 怎樣 包括 兩個 以及 trac 查表 在c語言中,每一個變量和函數有兩個屬性:數據類型和數據的存儲類別。 C語言中局部變量

C語言結構體所占內大小

oat 接下來 面試題 語言 將不 位置 idt str 返回 用一道面試題題引入struct str1 { char a; int b; float c; double d; };char類型占用

C語言中變數名及函式名的命名規則與駝峰命名法

一、C語言變數名的命名規則:(可以字母,數字,下劃線混合使用) 1. 只能以字母或下劃線開始;2. 不能以數字開始;3. 一般小寫;4. 關鍵字不允許用(eg:int float=2//error  float 為保留字不允許用); 二、函式名的命名規則 1.見名知意;2.自定義函式函式名首字

c語言實現linux下高危函式system (簡易V1.0版本)

system這個函式真的是要慎用,一不小心就會留下漏洞。 下面是用c語言簡易的實現了一下system函式 #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<err

c語言 解析常用字元操作函式

       在c語言中有很多的字元操作函式,而我們經常用到的字元操作函式有strcpy ,strncpy ,strcat ,strcmp ,strlen ,strlwr ,strupr ,gets ,puts ,等等很多很多。    

C語言的字串輸入fgets()函式

C語言的字串輸入fgets()函式 圖片來源-百度圖片 fgets()函式簡介 讀字串函式fgets()的功能是從指定的檔案中讀一個字串到字元陣列中,函式呼叫的形式為: fgets(字元陣列名,n,檔案指標),要從鍵盤輸入時檔

c語言部落格作業03-函式

1.1 思維導圖   1.2 本章學習體會及程式碼量學習體會 1.2.1 學習體會 -函式為一項新的知識,和之前學的不一樣,要掌握就必須設計並運用好所定義的函式,以此來輔助主函式的運算。 -函式的呼叫不是很熟練,具體要在哪裡呼叫合適不是很明確。 -在函式的設計方面沒完全掌握,設計中存

C語言部落格作業03---函式

1.本章學習總結 1.1思維導圖 1.2本章學習體會及程式碼量學習體會 1.2.1學習體會 這周主要學習了函式的一些基本內容,瞭解到了局部變數,全域性變數等,函式在解題方面把內容分成模組,使用起來會比較容易理解,看著層次分明點,但是在函式的呼叫這塊我還不是很熟練,還好相關題目做起來好像不是很難,p

C語言程式設計基礎講座之函式

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

C語言 資料型別輸入輸出函式(2018.11.17)

基本資料型別 5個方式瞭解基本型別 1、符號 2、位元組數 3、資料範圍 4、表示方法 5、運算方法 記憶體空間分配給變數,不是型別 指標型別:指標變臉中只能存放地址 空型別:主要用於資料型別的轉換和定義函式型別 void指標是萬用指標,萬用=無用,多數用於型別轉換後使用 限定性流程

C語言迴圈及定義子函式技巧

最近在網上看到一段程式碼,感覺很有收穫,他簡化了函式宣告的過程,並且使程式實現部分可迴圈,不用每次都退出重新進 #include<stdio.h> int main() { int ctu=0; do { double Legendre(int,float); int n;float x; pr

C語言之getchar()和putchar()函式

一、getchar()函式 getchar()函式不帶任何引數,他從佇列中返回下一個字元。 ch = getchar()//讀取下一個字元的輸入,並把該字元的值付給變數ch 該語句與下面的語句效果相同: scanf("%c", &ch); 二、putchar(

C語言第4課——從函式返回陣列

C 語言不允許返回一個完整的陣列作為函式的引數。但是,可以通過指定不帶索引的陣列名來返回一個指向陣列的指標。 如果想要從函式返回一個一維陣列,必須宣告一個返回指標的函式,如下: int * myFunction() { . . . } 另外,C 不支援在函式外返回區域性變數的地址,除

C語言:字串處理類函式

strlen() 求字串的實際長度(不包括'\0')   strcpy() char *strcpy(char* dest, const char *src); strcpy(目標串,源串); strcp