powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / тип не видется
16 сообщений из 16, страница 1 из 1
тип не видется
    #39993873
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть 3 файла :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
add.h

#define _CRT_SECURE_NO_WARNINGS 1
#define NULL 0
#define EOF (-1)
#define BUFSIZ 1024
#define OPEN_MAX 20
typedef struct _iobuf {
    int cnt;
    char* ptr;
    char* base;
    int flag;
    int fd;
} FILE;
enum flags
{
    _READ = 01,
    _WRITE = 02,
    _UNBUF = 04,
    _EOF = 010,
    _ERR = 020
};
FILE ZZ[OPEN_MAX]= {
    { 0,(char*)0,(char*)0 ,_READ,0 },
    { 0,(char*)0,(char*)0 ,_WRITE,1 },
    { 0,(char*)0,(char*)0 ,_WRITE | _UNBUF,2 }
};
#define stdin (&ZZ[0])
#define stdout (&ZZ[1])
#define stderr (&ZZ[2])
#define gaa__getchar() getc(stdin)
#define putchar(x) putc((x),stdout)
#define feof(p)     (((p)->flag & _EOF)!=0 )
#define ferror(p)   (((p)->flag & _EOF)!=0 )
#define fileno(p)   ((p)->fd)
#define getc(p) (--(p)->cnt >=0 ? (unsigned char)*(p)->ptr++: _fillbuf(p))
#define putc(x,p) (--(p)->cnt >=0 ? *(p)->ptr++ = (x) : _flushbuf((x),p) )



myFile.c
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
#define _CRT_SECURE_NO_WARNINGS 1
#include "add.h"
extern FILE ZZ[OPEN_MAX];



#define _S_IREAD  0x0100 // Read permission, owner
#define _S_IWRITE 0x0080 // Write permission, owner



FILE* fopen(char* name, char* mode)
{

    return NULL;
}

int _fillbuf(FILE* fp)
{
 
    return NULL;
}


и foo.c

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
extern FILE* fopen(char* name, char* mode);

int main(int argc, char* argv[])
{
     //FILE* f = fopen(argv[1], "r");
     //char c = gaa__getchar();
    return 0;
}



делаю в VS. foo.c и myFile.c подлиноковывается то есть находятся в рубрики исходящие файлы , а add.h находиться в рубрике заголовки. при компиляции получаю ошибку :

идентификатор "FILE" не определен foo
...
Рейтинг: 0 / 0
тип не видется
    #39993876
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81идентификатор "FILE" не определен foo

add.h в него включать кто будет?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
тип не видется
    #39993879
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

andron81идентификатор "FILE" не определен foo

add.h в него включать кто будет?..


add.h уже включен в myFile.c
Если я это сделаю ещё и в foo.c, то будет 2 раза подсунут add.h и вылетит ошибка , что что-то уже определено.
...
Рейтинг: 0 / 0
тип не видется
    #39993882
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каждый .c файл компилируется совершенно раздельно и включение .h в один никак не влияет на
все остальные.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
тип не видется
    #39993883
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Каждый .c файл компилируется совершенно раздельно и включение .h в один никак не влияет на
все остальные.


ну вот сейчас сделал как ты посоветовал.
теперь код foo такой :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
#include "add.h"
extern FILE* fopen(char* name, char* mode);

int main(int argc, char* argv[])
{
     //FILE* f = fopen(argv[1], "r");
     //char c = gaa__getchar();
    return 0;
}


остальное не трогал.
и получил вот чо:
"Ошибка LNK2005 _ZZ уже определен в foo.obj"
...
Рейтинг: 0 / 0
тип не видется
    #39993884
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81и получил вот чо

И правильно. Потому что не надо определять переменную в заголовочном файле.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
тип не видется
    #39993885
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

andron81и получил вот чо

И правильно. Потому что не надо определять переменную в заголовочном файле.

шикарно, но тогда я вынужден и вот это перенести из add.h в myFile.c:
Код: plaintext
1.
2.
3.
4.
5.
#define stdin (&ZZ[0])
#define stdout (&ZZ[1])
#define stderr (&ZZ[2])
#define gaa__getchar() getc(stdin)
#define putchar(x) putc((x),stdout)



а круто ли это ?
...
Рейтинг: 0 / 0
тип не видется
    #39993887
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто тогда нарушается на мой взгляд концепция , что мы только в заголовочном файле дефайним , а тут выходит и нет. я не прав ?
...
Рейтинг: 0 / 0
тип не видется
    #39993888
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

andron81и получил вот чо

И правильно. Потому что не надо определять переменную в заголовочном файле.


да компилится успешно. но комильфо ли так ? )))))
...
Рейтинг: 0 / 0
тип не видется
    #39993889
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81но тогда я вынужден и вот это перенести из add.h в myFile.c:

Нет, не вынужден.

Да, ты не прав. Начни перечитывать учебник по Си обратно с первой главы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
тип не видется
    #39993891
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,


)) любезно как всегда .
...
Рейтинг: 0 / 0
тип не видется
    #39993893
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81но комильфо ли так ?

Три часа медитации на горохе о разнице "объявления" и "определения".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
тип не видется
    #39993895
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

ааа, всё дошло до меня...
...
Рейтинг: 0 / 0
тип не видется
    #39993909
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,
тему можно закрывать окончательно !
...
Рейтинг: 0 / 0
тип не видется
    #39993910
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81
andron81,
тему можно закрывать окончательно !

Зачем? Может через час тебе что-то интересное посоветуют, а ты закрыл.
...
Рейтинг: 0 / 0
тип не видется
    #39993911
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
andron81
andron81,
тему можно закрывать окончательно !

Зачем? Может через час тебе что-то интересное посоветуют, а ты закрыл.


Сибиряков в книжку послал читать . тем не менее подсказал ))
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / тип не видется
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]