-2

a.c他のファイルのa.h機能を備えたサポート モジュールとして機能するfileがあります。

これらの機能では、ファイルを開いて、データの読み取り、データの書き込み、ファイルのクローズなどの機能を実行する必要があります。

これらの目的のために、ファイル ポインターのグローバル宣言をa.cbyで行いました。

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 がビルド ディレクトリからファイルを取得していて、変更が反映されていないことでした。

4

1 に答える 1

0

これstatic FILE* pFileを別のコンパイル単位から使用しようとする場合は、static

他のファイルに次を追加します。

 extern FILE *pfile;
于 2017-08-09T08:09:36.567 に答える