2010-09-06 2 views
0

Я новичок в C++, и у меня возникли проблемы с сегментированием моего кода. Вот мои настройки:новичок в C++, путают о разделении кода

  • main.cpp, который вызывает функцию, которая принимает 2 int и 1 char* и возвращает int
  • function.h, который содержит, среди прочего, функция prototpye

int function(int a, int b, char* c);

  • A function.cpp, содержащий фактическое определение функции.

Я использовал #include "function.h" в обеих функциях.cpp и main.cpp.

Когда я пытаюсь скомпилировать свой код, я получаю, что есть неопределенная ссылка на function(int, int, char*) в моей функции main().

Что случилось?

ответ

-1

* smacks head.

Я отказался от .cpp после файла функции, поэтому eclipse не компилировал этот файл. Прости!

+5

Я рекомендую вам просто удалить свой вопрос (чтобы не путать других и тратить время). –

+0

Как бы я хотел прочитать этот комментарий 2 минуты назад !. – Chubsdad

+1

Я голосовал, чтобы закрыть вопрос. Пожалуйста, удалите его, чтобы мы не теряли время или в ОЧЕНЬ наименее отредактировали его, чтобы это небольшое уведомление не застряло в нижней части страницы, отдельно от него. - А, на самом деле у меня есть возможность сделать это для вас! – Potatoswatter

1

Я полагаю, что вы не «защищали» ваши файлы .h от включения нескольких раз.

Всегда строить свои .h файлов с помощью препроцессора линий:

#ifndef __MYHEADERFILEH__ 
#define __MYHEADERFILEH__ 

your header file "code" here 

#endif 

______MYHEADERFILEH____ Является именем стоимости создания эксклюзивным, имя предпочтительнее заголовочного файл в верхнем регистре. Вы помещаете #include "MyHeaderFile.h" В каждом файле .cpp или .c с использованием файла заголовка.

Если вы разместите свой код, будет проще определить точку.

+4

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

+0

@James: С тех пор, когда * не * включают в себя охранники double-underscore-filename-double-underscore? Я думаю, что это довольно распространенная практика. Мне нравится добавлять название проекта, одно подчеркивание, а затем файл (читаемость и меньше шансов на конфликты). – ssube

+1

@peachykeen: Просто потому, что некоторые проекты используют этот формат, не делают его приемлемым. Я никогда не использовал зарезервированные имена для защиты заголовков в моих проектах на C++, и я знаю (по крайней мере, большинство) Boost этого не делает. Если это легко сделать правильно, почему это неправильно? –

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