2012-02-22 3 views
1

Я делаю что-то неправильно, я знаю. Я не могу понять, как связать два файла .cpp вместе через файл заголовка. Вызывающий метод не может видеть другой источник.Как связать исходные файлы на C++ с кодом :: Блоки

Я использую код :: Блоки как IDE с MinGW.

Любая помощь была бы принята с благодарностью. Было бы еще больше , если бы вы могли показать фиксированный источник, ссылку в ответ на страницу pastebin с ней.

/***********************************main.cpp***********************************/ 
#include <iostream> 

using namespace std; 

#include "test.h" 

int main() 
{ 
    printTest();   //can't see printTest, defined in test.cpp 
    return 0; 
}; 


/***********************************test.h***********************************/ 
#ifndef TEST_H_INCLUDED 
#define TEST_H_INCLUDED 

void printTest(); 

#endif // TEST_H_INCLUDED 


/***********************************test.cpp***********************************/ 
#include "test.h" 

void printTest() 
{ 
    cout << "Hello world!" << endl; 
}; 
+3

Ваш код верный, как вы называете компилятор? Вы добавили test.cpp в свои файлы проекта? Средство IDE должно знать, какие файлы нужно компилировать. – pezcode

+0

Показать файл makefile. – lapk

+0

Как вы пытаетесь создать свою программу и что * точно * является вашей ошибкой? Код на пастебине выглядит отлично. – Kitsune

ответ

3

Возможно, вы найдете this code blocks wiki. Похоже, что в блоках кода используется управляемая система сборки, поэтому, если вы правильно добавляете файл в проект, то он должен знать, чтобы скомпилировать его и связать в полученном объектном файле.

И только для более подробного описания некоторых других комментариев, когда вы используете «using namespace std;» пространство имен вводится только в область для файла, в котором находится оператор using. Вот почему другие говорят вам явно указать std :: namespace. Вы также можете перенести все пространство имен std в область видимости в файле test.cpp. Многие считают это плохой привычкой. Как правило, лучше ввести в рамки только то, что вам нужно с помощью

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

Наконец, помните, что зЬй :: епсИ добавляет новую строку и очищает буфер, это не очень хорошая замена для новой строки во всех случаях.

1

В test.cpp заменить cout << "Hello world!" << endl; на std::cout << "Hello world!" << std::endl;

1

Sanket ответ кажется неполным мне. Вы должны добавить #include <iostream> в свой test.cpp, чтобы компилятор знал, что такое «cout».

Как указано в заявлении, вы должны использовать std::cout и std::endl в test.cpp.

Смежные вопросы