要求在*部分寫代碼使整個程序運行后輸出“hello world”,有些人說,這還不簡單啊,于是寫出這樣的代碼:
01.
#include "stdio.h"
02.
void
print()
03.
{
04.
printf
(
"hello
world"
);
05.
}
06.
void
main()
07.
{
08.
print();
09.
}
這樣寫的確是沒問題,但是違背了題目的要求,因為題目不允許修改main函數,這下仿佛我們就沒轍了,因為我們學習C/C++語言的時候,明確說明main函數是程序的主函數,也是程序的入口函數,可是現在主函數為空,那怎么會執行子函數呢?
其實這個筆試題考察的不是我們對基本知識的理解,而是要學會發現問題解決問題的能力,有時候,當一條路走不通的時候,我們就要換一條路,通過查找資料,我們發現其實C++是可以修改入口函數的。
這里需要一個C++預編譯標識符 #pragma comment() 來幫助我們搞定這個問題。他的使用類型是:pragma comment( comment-type ,["commentstring"] )。
comment-type是一個預定義的標識符,指定注釋的類型,應該是compiler,exestr,lib,linker之一。
commentstring是一個提供為comment-type提供附加信息的字符串。
這里我們需要使用linker來修改鏈接設置:
#pragma comment(linker, "/entry:print")
看到了么?通過/entry參數來設置程序鏈接時候的主函數為print,這樣,就相當于print函數是整個程序的主函數,他替換了main函數的作用,相反的,main函數則成為了一個子函數
完整的代碼和運行結果如圖所示:
至于#pragma comment(lib, "msvcrt.lib")是因為使用了puts函數,如果使用printf的話可以不要這一句
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com