2017-08-09 131 views
-2

我有一个文件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从build目录中取文件和变化没有得到reflected.Thanks很多关于你的帮助

+1

你明白的需求和影响静态存储类? –

+0

hehe ...这是一个错误..在这 – Ram

+1

帮助我请[请阅读如何问好问题](http://stackoverflow.com/help/how-to-ask)。然后编辑您的问题以包含[最小,完整和可验证示例](http://stackoverflow.com/help/mcve),以及实际的错误消息(完整,完整且无需修改)作为文本。 –

回答

0

如果您尝试使用此static FILE* pFile从另一个编译单位去除static

在其他文件中添加:

extern FILE *pfile; 
+0

谢谢你的答复...我已经删除静态,但它仍然是抛出pFile未定义的错误..我已经声明File * pFile在宏下的同一个ac中,这个文件只包含函数...我应该在其他地方声明吗?再次感谢你的回复 – Ram

+1

@Ram显示更多代码 –

+0

嗨..我已经添加了类似我的实现您的友善细读的代码..我应该添加在调用此功能的文件...我不能够理解,因为这应该是本地文件仪式? – Ram