Можно ли хранить ФАЙЛ * в определенной пользователем структуре? - PullRequest
2 голосов
/ 21 октября 2010

первый пост здесь, так что будьте хороши;)

Возможно ли сохранить ФАЙЛ * в структуре, я не вижу причин, почему нет, но следующий код не будет компилироваться, я не могу сохранитьссылка на указатель файла также.

typedef struct fileType
{
    FILE * file;
    char fileName[MAX_FILENAME_LEN];
    unsigned linesRead;
    unsigned nextBufLine;           /* next line to be inserted/removed in the buffer */
    pthread_mutex_t * mtxFile;      /* mutex controlling access to this file */
}FileType;

Кажется, мой компилятор не распознает тип 'FILE', выдавая эту ошибку в этой строке, и, конечно, я включил stdio.h в заголовок

error: expected specifier-qualifier-list before '(' token

По сути, я пишу программу, которая порождает серию дочерних процессов, по очереди читает строки из файла и вставляет их в циклический буфер, где они читаются другим набором дочерних процессов, шифруются изаписывается в новый файл (строка за строкой).Это требование, чтобы родитель открывал и закрывал файл.

Мне разрешено использовать глобальные переменные для этого, но я хочу избегать его, если это возможно, спасибо за любые ответы.=]

Ответы [ 4 ]

3 голосов
/ 21 октября 2010

Есть ли у вас где-нибудь макрос, который переопределяет FILE или файл как что-то еще?

2 голосов
/ 21 октября 2010

Нет ничего плохого в хранении FILE* в структуре, и, учитывая, что в сообщении об ошибке упоминается '(' Я подозреваю, что проблема потенциально может быть в какой-то другой части вашего кода (поскольку оставьте круглые скобки в коде, который вы опубликовали.) Если вы опубликуете больше кода, мы могли бы помочь вам лучше. Учитывая то, что у вас есть, я думаю, что вы пропустили включение pthread_mutex_t

2 голосов
/ 21 октября 2010

Если вы включите <stdio.h>, хорошо бы иметь в вашей структуре элемент FILE *.

1 голос
/ 21 октября 2010

Какой это тип данных? char, int ...

unsigned linesRead;
unsigned nextBufLine; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...