是否可以在用户定义的结构中存储FILE *?

时间:2010-10-21 01:59:17

标签: c file

首先发布在这里,所以很好;)

是否可以在结构中存储FILE *,我没有理由为什么没有,但下面的代码不会编译,我似乎也无法存储对文件指针的引用。

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 个答案:

答案 0 :(得分:3)

你有一个宏在哪里重新定义文件或文件作为其他东西吗?

答案 1 :(得分:2)

如果你包含<stdio.h>,你的结构中有一个FILE *成员应该没问题。

答案 2 :(得分:2)

在结构中存储FILE*没有任何问题,并且假设错误消息提到'('我怀疑问题可能存在于代码的其他部分中(因为没有你发布的代码中有一个左括号。如果你发布了更多的代码,我们可能会更好地帮助你。鉴于你有什么,我唯一的另一个想法是你错过了pthread_mutex_t的包含

答案 3 :(得分:1)

它是什么数据类型? char,int ...

unsigned linesRead;
unsigned nextBufLine;