文件指针未定义时出错

时间:2017-08-09 08:07:07

标签: c linux pointers file-pointer

我有一个文件a.ca.h作为支持模块,其中包含其他文件的功能。

在这些函数中,我必须打开一个文件,并执行读取数据,写入数据,关闭数据等功能。

出于这些目的,我在a.c中通过

给出了文件指针的全局声明
static FILE* pFile; 

并直接使用pFile

编译器抛出错误的错误如下:

"pFile" not defined in the function

这里有什么问题?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <arpa/inet.h>

#define path "/tmp/diag.log"

FILE* pFile;

void a(bool value) {
    if (value) {
            pFile = fopen (path,"a");
      return;
    }
    else if (!value) {
        fclose (pFile);
    }
}

void b(bool value) {
  if(value)
  {
  fprintf (pFile,"%s",message);
  }
  }

更新: 错误是我的makefile正在从构建目录中获取文件并且更改没有得到反映。非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

如果您尝试使用其他编译单元中的static FILE* pFile,请删除static

在其他文件中添加:

 extern FILE *pfile;