这个 C 指针错误是什么意思?为什么会这样

布里杰什·萨马尔
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

typedef uint8_t BYTE;

int main(int argc, char *argv[])
{
    char *block = malloc(BYTE * 512);
    FILE *file = fopen(argv[1], "r");
     
    fclose(argv[1]);
}

我不知道我做错了什么,我还没有开始编写任何实际代码,我是 C 中的指针的新手。我什至没有做任何事情就已经出现错误,我很抱歉。

clang -ggdb3 -O0 -std=c11 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow    recover.c  -lcrypt -lcs50 -lm -o recover
recover.c:9:26: error: unexpected type name 'BYTE': expected expression
    char *block = malloc(BYTE * 512);
                         ^
recover.c:12:12: error: incompatible pointer types passing 'char *' to parameter of type 'FILE *' (aka 'struct _IO_FILE *') [-Werror,-Wincompatible-pointer-types]
    fclose(argv[1]);
           ^~~~~~~
/usr/include/stdio.h:213:26: note: passing argument to parameter '__stream' here
extern int fclose (FILE *__stream);
                         ^
2 errors generated.
make: *** [<builtin>: recover] Error 1
阿尔法哈里斯

因为fclose您应该传递一个FILE *作为参数,对于您的情况,它将是fclose(file);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章