gpt4 book ai didi

有人可以提供有关 gcc 的这些错误的线索吗?

转载 作者:行者123 更新时间:2023-12-04 23:07:43 27 4
gpt4 key购买 nike

我有这个代码:

#include <stdlib.h>
#include <string.h>
#include <libavcodec/avcodec.h>
#include <libavutil/opt.h>
#include <libavformat/avformat.h>

int main(int argc, char **argv)
{
avcodec_register_all();
av_register_all();

struct AVCodecTag * const *avctag;
AVOutputFormat *outputFormat = NULL;

const char *file = "file.mp4";
outputFormat = av_guess_format(0, file, 0);

if( ! outputFormat)
{
printf ("No container found\n");
exit (1);
}
printf("%s %d\n",outputFormat->long_name,outputFormat->video_codec);

avctag = outputFormat->codec_tag[0];
printf("%d\n",avctag->id);
}

即使我在 printf 行中使用了 -> ,编译器也会给出这个奇怪的错误:
error: ‘*avctag’ is a pointer; did you mean to use ‘->’?
printf("%d\n",avctag->id);

但它也给出了一个警告:
warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
avctag = outputFormat->codec_tag;

AVOutputFormat:codec_tag 根据文档定义为:

结构 AVCodecTag * 常量 *

这正是我在上面定义的指针。有人可以告诉我为什么我会收到警告和错误吗?

非常感谢

最佳答案

指针 avctag声明,就像一个指向常量指针的指针

struct AVCodecTag * const *avctag;

所以这个说法
printf("%d\n",avctag->id);

是无效的。

并且您需要检查此语句中右 watch 达式的类型
avctag = outputFormat->codec_tag[0];
outputFormat->codec_tag[0]的类型是什么?

关于有人可以提供有关 gcc 的这些错误的线索吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60727127/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com