2016-07-29 44 views
0

程序可以在沒有main()函數的情況下編寫嗎?錯誤對'WinMain @ 16'的未定義引用

我寫了這個代碼,並保存一個文件名作爲withoutmain.c 並得到一個錯誤

undefined reference to '[email protected]'" 

我的代碼

#include<stdio.h> 
    #include<windows.h> 
    extern void _exit(register int code); 
    _start(){ 
     int retval; 
     retval=myFunc(); 
     _exit(retval); 
    } 
    int myFunc(void){ 
    printf("Hiii Pratishtha"); 
    return 0; 
    } 

請給我提供這個問題的解決方案,也是正確的內存代碼的構造以及編程結束時發生的事情。 謝謝!

+0

解決方法很簡單:不要在沒有'main()'的情況下編寫程序。 –

+0

必須有一種方法來指定鏈接器選項中的入口點,但對於gcc我不知道。你爲什麼不在文檔中查找它? – Medinoc

+0

[如何使用gcc更改C程序的入口點?](http://stackoverflow.com/questions/7494244/how-to-change-entry-point-of-c-program-with-gcc) – Medinoc

回答

0

程序可以在沒有main()函數的情況下編寫嗎?

是的,可以有一個沒有主函數的C程序。 我建議兩種解決方案.......

1)使用定義主宏

#include<stdio.h> 
#include<windows.h> 
#define _start main 
extern void _exit(register int code); 

int myFunc(void){ 
    printf("Hiii Pratishtha"); 
    return 0; 
} 

int _start(){ 
    int retval; 
    retval=myFunc(); 
    _exit(retval); 
} 

2)Using Entry Point (Assuming you are using visual studio)

要設置在此鏈接器選項Visual Studio開發環境

/ENTRY:function 

A func它指定用戶定義的.exe文件或DLL的起始地址。

  1. 打開項目的「屬性頁」對話框。有關詳細信息,請參閱 設置Visual C++項目屬性。
  2. L點擊鏈接器文件夾。
  3. 單擊高級屬性頁面。
  4. 修改入口點屬性。

OR

如果您使用gcc然後

-Wl,-e_start 

-Wl ......事情參數傳遞給鏈接器和鏈接器將一個-e參數設置項函數

相關問題