每個程序都有一個main()
並且程序從那裏開始執行。是否有可能編寫一個沒有main()
的程序,並創建另一個函數作爲入口點?如果是這樣,任何人都可以告訴我該怎麼辦?我正在使用Linux?如何使其他函數作爲除main()之外的入口點C
回答
如果您使用gcc進行編譯,則指定-e <symbol>
選項可讓您將入口點更改爲函數symbol()
。
這可能會嚴重破壞事物,因爲它會繞過標準庫假定已經運行的啓動代碼... – 2012-03-13 02:07:50
當然,但這回答了這樣一個問題:「是否可以在不使用main()的情況下編寫函數,並使其他函數如如果可以的話,任何人都可以告訴我該怎麼做,我正在使用linux「,而不是」我怎樣才能改變C程序的入口點,避免嚴重破壞「。 – 2012-03-13 02:14:17
夠公平的。這更多的是對OP的評論,而不是對你的回答的評論。 – 2012-03-13 02:21:42
有一種構建可執行共享庫的解決方案,您可以使用另一個函數作爲入口點構建程序。
代碼如下:
#include <stdio.h>
#include <stdlib.h>
const char __invoke_dynamic_linker[] __attribute__ ((section (".interp")))
= "/lib/ld-linux.so.2";
void fun()
{
printf("This is fun./n");
exit(0);
}
然後建立你的程序作爲一個共享庫,並指定FUNC爲切入點:
$ gcc -fpic -shared -o fun.so -Wl,-e,fun fun.c
$ ./fun.so
這種方式的問題在於,FUNC不能像我們在main函數中那樣擁有正常的參數,這是因爲我們沒有c庫來初始化主要參數的東西。
你的建議似乎比問題更模糊。你的意思是說入口函數應該在一個動態鏈接的庫中,這樣它的地址可以用名字查找嗎? – 2012-03-13 02:31:26
@GeorgeSkoptsov它不需要是一個動態鏈接的庫,只有當你不需要去除符號信息或者你可以用硬編碼來比較參數與一些已知的函數符號時,它可能在程序本身。我認爲Manu只是想讓程序調用不同的功能。 – 2012-03-13 02:51:45
- 1. C++入口點 - > main()
- 2. AVR C函數從Main函數工作,但不從其他函數
- 3. 如何使用FontAwesome作爲除<i>之外的其他元素
- 4. 如何獲得除了elasticsearch聚合之外的其他數據?
- 5. Ajax請求,如何調用除「成功」之外的其他函數?
- 6. 在Golang應用程序中,如何在除main之外的其他包中嵌入版本?
- 7. 如何使用dom4j在其他節點之前插入節點?
- 8. if-else語句是否出現在C#的Main函數之外?
- 9. 如果除了ValueError之外的其他工作python3(初學者)
- 10. 如何編寫在C++中使用其他函數的函數
- 11. Qt設計器:編輯除了mainwindow之外的其他窗口
- 12. C - 使用「*」作爲函數main的參數
- 13. C++ main函數的輸入參數
- 14. 如何以其他函數作爲參數調用函數
- 15. 如何使用函數的輸出變量作爲輸入,其他功能
- 16. 需要鏈接到除菜單之外的其他錨點
- 17. 如何讓Django使用除「默認」之外的其他數據庫?
- 18. 如何在main()之外調用CUDA函數?
- 19. 如何爲使用stdin輸入的其他函數編寫測試函數?
- 20. Visual C#2008 Express除了創建/刪除斷點之外,沒有給出任何其他突破點的選項
- 21. 如何查找在C++之前調用的代碼函數main
- 22. 如何將angular2的http與除應用程序主機端口之外的其他端口一起使用?
- 23. 使用類函數中的變量作爲其他函數
- 24. 完成其他函數完成之前的C++函數
- 25. 如何在使用angular引導函數時使用指令作爲入口點?
- 26. SFML 1.6 - sf :: Sprite.Move()不能在main()函數之外工作
- 27. 如何連接到位於除使用其端口號之外的其他域中的SQL Server?
- 28. 如何在除MainActivity之外的其他Java類中播放mp?
- 29. 如何重定向除一個之外的所有其他域?
- 30. MvvmCross:如何導航到除ViewModel之外的其他內容?
你想通過沒有'main'作爲你的入口點來實現什麼? – eduffy 2012-03-13 01:55:42
@eduffy正在閱讀一本關於C的書,它提到main()只是一個函數,因爲它有許多其他的功能,所以有這個疑問, – Manu 2012-03-14 04:48:45
看看這篇文章http://linuxgazette.net/issue84/hawk.html,以看看'main()'被調用之前會發生什麼。 – eduffy 2012-03-14 13:04:23