Гость
Форумы / C++ [игнор отключен] [закрыт для гостей] / тип не видется / 16 сообщений из 16, страница 1 из 1
30.08.2020, 14:29
    #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
30.08.2020, 14:55
    #39993876
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тип не видется
andron81идентификатор "FILE" не определен foo

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

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

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


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

И правильно. Потому что не надо определять переменную в заголовочном файле.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
30.08.2020, 15:15
    #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
30.08.2020, 15:18
    #39993887
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тип не видется
просто тогда нарушается на мой взгляд концепция , что мы только в заголовочном файле дефайним , а тут выходит и нет. я не прав ?
...
Рейтинг: 0 / 0
30.08.2020, 15:21
    #39993888
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тип не видется
Dimitry Sibiryakov

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

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


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

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

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


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

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

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

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

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


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


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