[BorlandC] главный файл видел этот включенный файл?

Tanya2009

Если я использую в одном файле другой, то как сделать так, чтобы главный файл видел этот включенный файл? <>
<>

Elina74

Допустим есть чудный файл "file1.cpp", функции из которого мы должны видеть в других двух файлах.
Ты можешь делать
#include "file1.cpp"
из обоих файлов (как главного, так и не главного).
Тока в файле "file1.cpp" нужно в начале написать
#ifndef FILE1CPP_UNIC_CODE12345
#define FILE1CPP_UNIC_CODE12345
не важно что ты напишешь в этих define, лишь бы это были уникальные буквосочетания.
и в его конце написать
#endif
Это решит проблему?

Tanya2009

Я это написала. Теперь он мне пишет "Unable to open file 2.def". 2.cpp - это main file. А что такое файл с расширением def?

Elina74

Где и что ты написала? Как твои файлы называются, какой из них ты компилишь? Чуть подробнее, плиз...

Tanya2009

у меня два файла: 2.cpp и func.cpp. Второй вызывается в первом. Так вот в func.cpp я в начале написала
#ifndef MATRIX_C
#define MATRIX_C
а в конце #endif

Elina74

Понятно.
После этого в модуле 2.cpp ты можешь использовать функции, описанные в func.cpp. Надеюсь понятно, что наоборот, использовать функции, описанные в 2.cpp в модуле func.cpp у тебя не получится.
А проблема в чем?
Я хиромантией не занимаюсь, по звездам не гадаю. Еще подробнее. В чем ошибка? Из какого модуля какие функции ты вызываешь?

Elina74

И вообще, в трудных случаях, а еще когда не знаешь чего делать, и чего вообще можно делать в этом языке, надо читать учебник.
Б. Страуструп


1.6 Структура программы

Программа на С++ обычно состоит из большого числа исходных фай-
лов, каждый из которых содержит описания типов, функций, переменных
и констант. Чтобы имя можно было использовать в разных исходных
файлах для ссылки на один и тот же объект, оно должно быть описано
как внешнее. Например:

extern double sqrt(double);
extern instream cin;

Самый обычный способ обеспечить согласованность исходных файлов
- это поместить такие описания в отдельные файлы, называемые заго-
ловочными (или хэдер) файлами, а затем включить, то есть скопиро-
вать, эти заголовочные файлы во все файлы, где нужны эти описания.
Например, если описание sqrt хранится в заголовочном файле для
стандартных математических функций math.h, и вы хотите извлечь
квадратный корень из 4, можно написать:

#include <math.h>
//...
x = sqrt(4);

Поскольку обычные заголовочные файлы включаются во многие исход-
ные файлы, они не содержат описаний, которые не должны повторяться.
Например, тела функций даются только для inline-подставляемых функ-
ций (12) и инициализаторы даются только для констант (3.1).
За исключением этих случаев, заголовочный файл является хранилищем
информации о типах. Он обеспечивает интерфейс между отдельно компи-
лируемыми частями программы.

В команде включения include имя файла, заключенное в угловые
скобки, например <math.h>, относится к файлу с этим именем в стан-
дартном каталоге (часто это /usr/include/CC на файлы, находящиеся
в каких-либо других местах ссылаются с помощью имен, заключенных в
двойные кавычки. Например:

#include "math1.h"
#include "/usr/bs/math2.h"

включит math1.h из текущего пользовательского каталога, а math2.h
из каталога /usr/bs.

Здесь приводится очень маленький законченный пример программы, в
котором строка определяется в одном файле, а ее печать производится
в другом. Файл header.h определяет необходимые типы:

// header.h

extern char* prog_name;
extern void f;
В файле main.c находится
главная программа:

// main.c

#include "header.h"
char* prog_name = "дурацкий, но полный";
main {
f;
}

а файл f.c печатает строку:

// f.c

#include <stream.h>
#include "header.h"
void f {
cout << prog_name << "\n";
}

Скомпилировать и запустить программу вы можете например так:

$ CC main.c f.c -o silly
$ silly
дурацкий, но полный

Оставить комментарий
Имя или ник:
Комментарий: