0

私はこのcモジュールを持っています:

#include "stdafx.h"
#include "targetver.h"

#include "libavutil\mathematics.h"
#include "libavcodec\avcodec.h"

FILE fileName;

File fileName; を実行しました。

これにはinit関数があります:

void init(const char *filename)
{
    fileName = filename;
    avcodec_register_all();
    printf("Encode video file %s\n", fileName);

だから私は fileName = filename; をしました。私がした理由は、start() と呼ばれる別の関数があるからです。

void start()
{
    /* open it */
    if (avcodec_open2(c, codec, NULL) < 0) {
        fprintf(stderr, "Could not open codec\n");
        exit(1);
    }
//    f = fopen(filename, "wb");
    errn = fopen_s(&f,fileName, "wb");

    if (!f) {
        fprintf(stderr, "Could not open %s\n", fileName);
        exit(1);
    }
}

そして、最初はファイル名がありましたが、見つからなかったので、代わりにfileNameを使用したかったのです。しかし、私は今いくつかのエラーを得ています:

この行: fileName = filename; = 記号で赤い線のエラーが発生しています:

エラー 1 エラー C2440: '=' : 'const char *' から 'FILE' に変換できません

次に、この行で: errn = fopen_s(&f,fileName, "wb") 私が取得しているファイル名で:

エラー 2 エラー C2065: 'filename': 宣言されていない識別子

fileName の次の行に同じエラー番号 2 があります: fprintf(stderr, "Could not open %s\n", fileName);

次に、fileName = filename に関する別のエラー:

6   IntelliSense: no operator "=" matches these operands
        operand types are: FILE = const char *

最後のエラー: 7 IntelliSense: "FILE" から "const char *" への適切な変換関数が存在しません

私がやりたかったのは、グローバルな fileName 変数を宣言して、すべての場所で使用することだけです。

4

1 に答える 1