2012-11-17 9 views
0

我試圖編譯三個文件在一起,有一個主要方法在passweb.c。主要和先前定義的主要衝突類型在這裏編譯時使用

繼承人passweb.c

#include <stdlib.h> 
#include <string.h> 
#include <stdio.h> 
#include <cipher.c> 
#include <menu.c> 

long pointer; 
char *createRecord(char *name, char *password, char *type); 
char *file = "password.csv"; 
int main(int argc, char *argv[]){ 
    if(fopen(file,"r")==NULL){ 
     FILE *newFile = fopen(file,"w+"); 
     fclose(newFile); 
    } 
    if(strcmp(argv[0],"-menu")==1){ 
     menu(); 
    } 
    else if(strcmp(argv[0],"-add")==1){ 
     add(argv[1], argv[2], argv[3]); 
    } 
    else if(strcmp(argv[0],"-edit")==1){ 
     edit(argv[1],argv[2],argv[3],argv[4],argv[5],argv[6]); 
    } 
} 

和cipher.c

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

int Encrypt(char *fileName){ 
    int offset=5; 
    Shift(fileName, offset); 
} 
int Decrypt(char *fileName){ 
    int offset=-5; 
    Shift(fileName, offset); 
} 

生成文件:

passweb: passweb.c menu.c cipher.c 
     gcc -o passweb passweb.c menu.c cipher.c -I. 

錯誤:

passweb.c:10: error: conflicting types for ‘main’ 
./cipher.c:3: error: previous definition of ‘main’ was here 

我搞不​​清楚我做錯了什麼。 預先感謝您的時間!

+0

'menu.c'是什麼樣的?它是否也定義了'main'? – Cornstalks

+0

不,它沒有定義主要的 – agarrow

回答

2

不要將源文件包含到源文件中。擺脫以下內容:

#include <cipher.c> 
#include <menu.c> 

您編寫它的方式,你編譯menu.c和cipher.c兩次。首先編譯passweb.c,再編譯menu.c和cipher.c。

+0

我怎麼能改變我的生成文件呢? – agarrow

+2

你可以從編譯命令行中刪除menu.c和cipher.c,但這不是一個好辦法。 – Cornstalks