**已关闭。**此问题需要debugging details。它目前不接受回答。
编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答这个问题。
3天前关闭。
Improve this question的
我有一个源文件,所有错误都突出显示:
#include <stdio.h>
#include <stdint.h>
#include "FAT12.h"
int main() {
FILE* disk;
fopen_s(&disk, "Test.vhd", "w+b");
FAT12 fat; //C2065, C2146, E0020, E0065
fat.format(); //C2224, E0020
while (1);
return 0;
}
字符串
和标题,错误只显示在输出中:
#pragma once
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
struct FAT12 {
#pragma pack(push, 1)
struct Bootsector {
uint8_t jump[3] = {0xEB, 0x3C, 0x90}; //C2143, C2059
uint8_t oem[8] = { 'M', 'S', 'W', 'I', 'N', '4', '.', '1' };
// ... //
}; //C2059
#pragma pack(pop)
Bootsector bootsector; //C2061, C2059
uint8_t* fat;
bool format(FILE* disk, const char label[12], unsigned int serial) { //C2061, C2059, C2059
// ... //
}
}; //C2059
型
我所有的错误:
C2143: syntax error: missing ";" before "="
C2059: syntax error: =
C2059: syntax error: }
C2061: syntax error: identifier "bootsector"
C2059: syntax error: ;
C2061: syntax error: identifier "format"
C2059: syntax error: ;
C2059: syntax error: <parameter-list>
C2059: syntax error: }
C2065: FAT12: undeclared identifier
C2146: syntax error: missing";" before identifier "fat"
C2224: expression to the left of ".format" must be a struct type or union
型
我不知道在这种情况下该怎么做,我想这是我的VS2022设置的问题。也许有一些不正确的类型。。仅突出显示源文件中的错误,其他错误仅显示在编译器输出中。
2条答案
按热度按时间wn9m85ua1#
1.在
struct FAT12 { };
中有一个不是字段声明的变量。是否尝试创建命名空间?C语言没有命名空间。1.初始设定式不属于型别宣告。它们初始化变量,因此它们属于变量定义。
1.您宣告名为
struct Bootsector
的型别,但使用名为Bootsector
的型别。1.使用名为
bool
的型别,而不先宣告它。1.您没有传递任何必要的参数给
format
。1.删除无限循环
while (1);
。已修正:
FAT12.h
:字符串
FAT12.c
:型
在主程序中:
型
bnl4lu3b2#
这些错误指示语法问题和未声明的标识符。我已经一一列举出来了:
字符串
型
型
1.另外,您已经将format()的返回类型设置为bool,这使其非void,但内部没有return语句。不过,我认为这只应该提出一个警告。
这些建议应该可以修正你的错误,如果你有更多的建议,请告诉我。