J'ai eu un problème avec l'inclusion de fichiers. Ce que j'ai essentiellement fait est un programme de ligne de commande en C qui fonctionne avec un fichier csv. Il a 5 commandes: -menu, -add, -edit, -del, -verify. Tout est bon sauf pour le menu. Ce qui doit arriver quand je tape "./passweb -menu" est pour qu'un menu visuel apparaisse. Cette commande de menu devrait appeler une nouvelle fonction et elle doit être située dans un fichier c séparé (alias menu.c). Le problème que j'ai en ce moment est que je ne sais pas trop comment inclure les fichiers à exécuter dans le menu.c parce que la façon dont je l'ai configuré en ce moment, passweb.c a toutes les fonctions comme -add et -edit et etc. Je sais que vous devez faire des fichiers d'en-tête et autres, mais il se plaint que j'ai déclaré les méthodes deux fois ce qui est vrai puisque j'utilise les fonctions dans le fichier menu.#including files
est ici une partie du code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cipher.h"
#include "menu.h"
#include "passweb.h"
#define MAXLENGTH 51 //longest length of a single record + 1 =51 bytes
#define SIZEOFDB 1000
#define ENCRYPT 5
typedef struct rec
{
char name[MAXLENGTH];
char pw[MAXLENGTH];
char type[6];
int boolean;
}RECORD;
int add(char *nName, char *nPw, char *nType, RECORD *arr, int size);
void del (char *tName, RECORD *arr, int size);
int edit(char *nName, char *nPw, char *nType, char *tName, char *tPw, RECORD *arr, int size);
int verify (char *tName, char *tPw, RECORD *arr,int size);
Ceci est mon fichier principal « passweb.c » et il a déclaré que les fonctions. Plus tard dans la partie principale, j'appellerai une fonction de menu qui se trouve dans un fichier menu.c. Dans la fonction de menu j'utilise "ajouter", "éditer", "del" et etc que j'ai écrit dans ce fichier. Comme vous pouvez le voir en haut, j'ai inclus les fichiers d'en-tête.
Que puis-je faire pour résoudre ce problème? Désolé pour le post long.
Merci
Quel est votre message d'erreur exact? Que contient le fichier d'en-tête contenant la déclaration en double? –
'passweb.c: erreur: types contradictoires pour 'ajouter' ' passweb.h: 12: erreur: déclaration précédente de 'ajouter' était ici' Ceux-ci viennent pour chaque fonction. Est-ce que ça fonctionne si j'utilise une fonction créée dans, par exemple, main.c qui exécute une fonction dans le menu.c, puis menu.c exécute une fonction créée main.c? –
OK, c'est mieux. Vous déclarez la fonction deux fois. Une fois dans le fichier d'en-tête et une fois dans le fichier C Vous ne pouvez déclarer quelque chose qu'une seule fois par unité de traduction. –