[英]How to fix compilation error “WinMain” in a C program?
有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
transaction.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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.