错误未定义引用 'WinMain@16'

Error Undefined reference to 'WinMain@16'

可以不使用 main() 函数来编写程序吗?

我已经编写了这段代码并将文件名保存为 withoutmain.c 并收到错误

undefined reference to 'WinMain@16'"

我的代码

 #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;
    }

请提供此问题的解决方案以及代码的正确内存构造以及此程序的编译器端发生的情况。 谢谢!

Can a program be written without main() function?

是的,可以有没有 main 函数的 C 程序。 我会建议两种解决方案......

1) 使用定义 main

的宏
#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

为 .exe 文件或 DLL 指定用户定义起始地址的函数。

  1. 打开项目的 属性 页面对话框。有关详细信息,请参阅 设置 Visual C++ 项目属性。
  2. L单击链接器文件夹。
  3. 单击高级 属性 页面。
  4. 修改入口点属性。

如果您使用 gcc 那么

-Wl,-e_start

-Wl,... 将参数传递给链接器,链接器采用-e参数来设置入口函数