【发布时间】:2021-04-28 13:48:58
【问题描述】:
当我尝试在 gcc 中使用头文件编译我的程序时,出现如下错误: c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\37069\AppData\Local \Temp\ccnYwij4.o:file2048.c:(.bss+0x0): 'matrix'的多重定义; C:\Users\37069\AppData\Local\Temp\ccGaOCe4.o:namudarbas2.c:(.bss+0x0):这里首先定义 collect2.exe:错误:ld 返回 1 个退出状态
矩阵只在我的头文件中初始化。
头文件:
#ifndef FILE2048_H
#define FILE2048_H
#define SIZE 4
#ifdef __cplusplus
extern "C" {
#endif
int matrix[SIZE+1][SIZE+1]={0};
int score;
void saveToFile(void);
void start(void);
void reset(void);
#ifdef __cplusplus
}
#endif
#endif
其他已定义函数的文件:
#include <stdio.h>
#include <stdlib.h>
#include "file2048.h"
void saveToFile(){
FILE *load=fopen("2048.txt", "w");
fprintf(load, "%d %d %d %d\n%d %d %d %d\n%d %d %d %d\n%d %d %d %d\n%d", matrix[0][0], matrix[0][1], matrix[0][2], matrix[0][3], matrix[1][0], matrix[1][1], matrix[1][2], matrix[1][3], matrix[2][0], matrix[2][1], matrix[2][2], matrix[2][3], matrix[3][0], matrix[3][1], matrix[3][2], matrix[3][3], score);
fclose(load);
}
void start(){
FILE *load=fopen("2048.txt", "r");
int i, j;
for(i=0; i<SIZE; i++){
for(j=0; j<SIZE; j++){
fscanf(load, "%d", &matrix[i][j]);
}
}
fscanf(load, "%d", &score);
fclose(load);
}
还有一些我的主文件,我尝试调用我在另一个文件中创建的函数:
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <conio.h>
#include "file2048.h"
#define UP 72
#define DOWN 80
#define LEFT 75
#define RIGHT 77
#define ESC 57
int over=0;
int last=0;
void display(){
system("cls");
int i, j;
for(i=0; i<SIZE; i++){
printf("\n\n\n");
for(j=0; j<SIZE; j++)
{
printf("%d\t", matrix[i][j]);
}
}
saveToFile();
printf("Your score - %d", score);
}
有什么帮助吗?我是头文件新手。
【问题讨论】:
-
您不应在标题中“定义”(隐式或显式分配空间)变量。
-
所以应该在main中定义?
标签: c