Découper son projet à l'aide de fichiers .h

Le problème exposé dans ce sujet a été résolu.

Bonjour,

Je cherche à comprendre comment fonctionnent les fichiers .h.
J’ai lu ce sujet mais malgré tout, le code ne compile pas.

Le code est très simple, il consiste à afficher « hello ».
Pour le compiler, il faut utiliser la commande make.

Comment corriger cette erreur de compilation ?
myprint.h:4:14: error: variable or field ‘myprint’ declared void

makefile

all: myprint.o main.cpp
    g++ myprint.o main.cpp -o main
myprint.o: myprint.cpp
    g++ -c myprint.cpp
clean:
    rm *.o

main.cpp

#include <iostream>
#include <string>

#include "myprint.h"

using std::cout;
using std::endl;

int main()
{
    myprint("hello");
    return EXIT_SUCCESS;
}

myprint.cpp

#include <string>
#include "myprint.h"

void myprint(std::string s) {
    cout << s << endl;
}

myprint.h

#ifndef MYPRINT_H
#define MYPRINT_H

#include <string>

void myprint(std::string s);

#endif

Merci, en effet ça fonctionne à présent.
En fait, j’incluais les bibliothèques standards là où ce n’était pas nécessaire.

Code corrigé :

makefile

all: myprint.o main.cpp
    g++ -o main main.cpp myprint.cpp
myprint.o: myprint.cpp
    g++ -c myprint.cpp
clean:
    rm *.o

main.cpp

#include "myprint.h"

int main()
{
    myprint("hello");
    return EXIT_SUCCESS;
}

myprint.h

#ifndef MYPRINT_H
#define MYPRINT_H

#include <iostream>
#include <string>

using std::cout;
using std::endl;
using std::string;

void myprint(string);

#endif

myprint.cpp

#include "myprint.h"

void myprint(string s) {
    cout << s << endl;
}

Dans ce cas particulier, elle ne sont indispensables que dans le fichier myprint.h.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte