私はこの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 変数を宣言して、すべての場所で使用することだけです。