Projekty wieloplikowe c++ - multiple definition of

0

Chce sobie zrobić programik podzielony na pliki i z użycie przestrzeni nazw
i mam tak:
3 plik
jeden z mainem .cpp, jeden z funkcjami .cpp, i jeden z prototypami funkcji .h

#include <iostream>
#include "prototypy_funkcji.h"
#include "funkcje.cpp"

int main(int argc, char** argv)
{    
    menu();
}

//=========================

#include <iostream>

using std::cout;
using std::endl;
    
void menu(void)
{
    cout << "1.jakas tam opcja" << endl;
}

//===========================
#ifndef PROTOTYPY
#define PROTOTYPY

void menu(void);
#endif

i mam taki komunikat dlaczego??
funkcje.cpp:(.text+0x0): multiple definition of `menu()'

korzystam z deva i daje new project.
ale jak nie robie new project to wszystko jest ok

0

#include "funkcje.cpp" A po co to?

1

funkcje.cpp - dołącz do projektu, nie tak jak to uczyniłeś.

1

Nie includuje się plików cpp. Kompiluje się je a potem linkuje wszystko w jeden plik wynikowy. Jeśli używasz jakiegoś IDE to wystarczy że stworzysz projekt a IDE samo ogarnie kompilacje i linkowanie. Jesli komiplujesz z konsoli to wystarczy
gcc plik.cpp plik2.cpp .... -o plik_wynikowy

Tak czy siak wywal includowanie plików źródłowych.

0

czyli includuje tylko pliki nagłówkowe??

1

A jakiego słowa w tym:

Shalom napisał(a):

Nie includuje się plików cpp.
nie zrozumiałeś?

0

no to skąd kompilator wie gdzie szukać definicji funkcji??

1

@Kosimazaki123 jak zlinkujesz wszystkie definicje i dasz kompilatorowi informacje o nazwie funkcji to on sobie odpowiednią znajdzie...

1 użytkowników online, w tym zalogowanych: 0, gości: 1