當前位置:
首頁 > 知識 > 你會用C語言寫一個沒有main函數的程序嗎!

你會用C語言寫一個沒有main函數的程序嗎!

你有沒有想過如何寫一個C程序沒有main函數嗎?沒有main函數C程序可以執行嗎?是可能做到的嗎?

好了,答案是YES!沒有main函數的C程序,這個可以有。這裡是沒有main函數的程序的源代碼:

#include

#define decode(s,t,u,m,p,e,d)m ## s

#define begin decode(a,n,i,m,a,t,e)

int begin()

想要一起學習C++的可以加裙六二六八七一九一六,裙內有各種資料滿足大家,歡迎加裙

上面的程序運行完全正常,即使沒有main函數。但是怎麼樣?它背後的邏輯是什麼?我們如何可以有一個C程序工作沒有主要功能。繼續閱讀,找出答案...

這裡,我們使用一個名為#define的預處理器指令,帶有參數,給人的印象是程序運行時沒有main函數。

注意:預處理器是在編譯之前處理源代碼的程序。

'##'運算符稱為token粘貼或token合併運算符。也就是說,我們可以合併兩個或多個字元。

#define decode(s,t,u,m,p,e,d)m ## s

什麼是預處理器在這裡?宏解碼(s,t,u,m,p,e,d)被擴展為「must」(##運算符將m,s,u和t合併為musy)。邏輯是,當你通過(s,t,u,m,p,e,d)作為參數時,它合併第4,第1,第3和第2個字元(標記)。

現在,看看程序的第三行:

#define begin decode(a,n,i,m,a,t,e)

這裡,預處理器用擴展解碼(a,n,i,m,a,t,e)替換宏「begin」。根據上一行中的宏定義,必須擴展參數,以便必須合併第4,第1,第3和第2個字元。在參數(a,n,i,m,a,t,e)中,第四,第一,第三和第二字元是'm','a','i'和'n'。

因此,在將程序傳遞給編譯器之前,第三行「int begin」由預處理器替換為「int main」。而已。

實際上,不可能存在沒有主函數的C程序。在這裡,我們只是玩一個障眼法,使我們相信程序運行沒有main函數,但實際上是在程序里隱藏了一個main函數。

想要一起學習C++的可以加裙六二六八七一九一六,裙內有各種資料滿足大家,歡迎加裙

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 C加加 的精彩文章:

帶你走進C語言程序的世界
C語言模擬ATM自動櫃員機界面
編寫xx管理系統,內有指導教程!
C語言編程簡單加密示例

TAG:C加加 |

您可能感興趣

沒有一個Mini bag,怎麼好意思說自己時髦?
Angelababy竟然又雙叒「整容」了,沒有一個不說丑!
感謝信只會寫 Thank you,沒有回復你怪誰?
iphone X沒有Home鍵不習慣?教你一招手動找回!
什麼?lamer還沒有這個好用!
小夥伴們,有沒有吃過「biangbiang面」的!
沒有這雙鞋,也就沒有了 Jordan Brand
看了angelababy精緻的臉,才知道什麼叫做美的沒有靈魂
G?活? 沒有這2件護膚品,超模Bella Hadid大概就不會再出國了吧!
用iPhoneX,為什麼現在,完全沒有iPhone4那時候的風光?
說真的,很難想像一個男孩子沒有自己的Air force 1
沒有一雙 Dad Shoes,你還好意思出去浪?
G?活 沒有這2件護膚品,超模Bella Hadid大概就不會再出國了吧!
iPhone莫名其妙被扣費?一定是你沒有關掉這個開關
iPhone X被千元國產欺負?有沒有搞錯?
衣櫃里沒有這條連體褲,你還敢叫自己是Cool Girl嗎?
如何讓你的代碼沒有Bug?GitHub排名第一的項目提出了一勞永逸的方法
G活 沒有這2件護膚品,超模Bella Hadid大概就不會再出國了吧!
為什麼Chinglish總是聽起來沒有禮貌?
三星S9想要抄襲iPhone X的面容ID?可能性幾乎沒有,簡直痴人說夢