最近看到這樣一道題,感覺很有意思嗎 ,據(jù)說是月薪2W的筆試題,當然 了,肯定還有很多題了,所以 就算你會這道題并不表示你能月薪2W哈哈哈。 好了進入主題: 要求修改一下程序,寫代碼使整個程序運行后輸出“hello world”不允許修改main函數(shù),在強調一下不能修改main函數(shù)。 不允許修改main函數(shù),這下仿佛我們就沒轍了,因為我們學習C/C++語言的時候,明確說明main函數(shù)是程序的主函數(shù),也是程序的入口函數(shù),可是現(xiàn)在主函數(shù)為空,那怎么會執(zhí)行子函數(shù)呢? 其實這個筆試題考察的不是我們對基本知識的理解,而是要學會發(fā)現(xiàn)問題解決問題的能力,有時候,當一條路走不通的時候,我們就要換一條路,實則C++是可以修改入口函數(shù)的。 這里需要一個C++預編譯標識符 #pragma comment() 來幫助我們搞定這個問題。使用的是:pragma comment( comment-type ,["commentstring"] )。
這里我們需要使用linker來修改鏈接設置:#pragma comment(linker, "/entry:print"); 看到了么?通過/entry參數(shù)來設置程序鏈接時候的主函數(shù)為print,這樣,就相當于print函數(shù)是整個程序的主函數(shù),他替換了main函數(shù)的作用,相反的,main函數(shù)則成為了一個子函數(shù) 完整的代碼和運行結果如圖所示: image.png 其實做為一個開發(fā)者,有一個學習的氛圍跟一個交流圈子特別重要這里我推薦一個C/C++交流群556,791,282,不管你是小白還是大牛歡迎入駐,大家一起交流成長。 image |
|