gpt4 book ai didi

c - 如何修复 C 程序中的编译错误 "WinMain"?

转载 作者:太空宇宙 更新时间:2023-11-04 06:48:44 24 4
gpt4 key购买 nike

有3个文件-1.atm.c(源文件)2.transactions.h(函数声明)3.transactions.c(定义函数)当我编译(GCC)这个时,我收到一个 WinMain 错误。

而且我尝试了所有我知道的方法,我可以编译程序。例 1: gcc -o atm.c transactions.c transactions.h//atm.c 以这种方式被删除。

例 2:因为我已经在源代码中包含了文件 (.h),所以我没有在编译时给出 .h: gcc -o atm.c transactions.c//在这种情况下,文件不会被删除,但会出现 WinMain 错误。

** 输出:**

gcc -o atm.c transactions.c transactions.h
C:/crossdev/src/mingw-w64-v4-git/mingw-w64-crt/crt/crt0_c.c:18: undefined reference to `WinMain'
collect2.exe: error: ld returned 1 exit status

atm.c:

#include "transactions.h"
int main(void) {

initializeAccount();
getBalance();

//Perform first transaction
askCustomer();
updateAccount(amount);
getBalance();

//Perform second transaction
askCustomer();
updateAccount(amount);
addGift(5.0);
getBalance();

//Perform third transaction
askCustomer();
updateAccount(amount);
addGift(2.0);
getBalance();
thankYou();
return EXIT_SUCCESS;
}

transactions.h:

#include <stdio.h>
#include <stdlib.h>
#ifndef TRANSACTIONS_H_
#define TRANSACTIONS_H_

float accountBalance, amount;

void initializeAccount();
void getBalance(void);
void askCustomer(void);
void updateAccount(float value);
void addGift(float giftAmount);
void thankYou(void);

#endif

交易.c:

#include <stdio.h>
#include <stdlib.h>


float accountBalance, amount;


void initializeAccount(void){
accountBalance = 0.0;
}

void addGift(float giftAmount){
accountBalance += giftAmount;
printf("A gift of $%.2f has been added to your \n",giftAmount);
}

void askCustomer(void){
printf("Next transaction please...\n");
printf("Enter amount to credit (positive) or debit (negative):");
scanf("%f",&amount);
}

void getBalance(void){
printf("\ncurrent balance is $%.2f\n", accountBalance);
}

void updateAccount(float amount){
accountBalance += amount;
printf("The account was updated with $%.2f\n",amount);
}

void thankYou(void){
printf("------ Thank you! ------");
}

最佳答案

-o 用于命名二进制可执行文件,它是程序的输出。它后面应该跟一个文件名。

你告诉 gcc 链接的可执行文件应该命名为 atm.c。这是不正确的,但也会导致该文件无法编译或链接。

正确编译的一种方法:

gcc -std=c99 atm.c transactions.c -o atm.exe

关于c - 如何修复 C 程序中的编译错误 "WinMain"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54456788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com