gpt4 book ai didi

c - 如何在c中管理全局结构

转载 作者:行者123 更新时间:2023-11-30 16:22:50 24 4
gpt4 key购买 nike

老实说,我不习惯用 c 语言工作,也许我在解决这个问题时是错的。

我有 3 个文件,我需要将数据从一个文件传递到另一个文件

//main.c

#include <stdio.h>
#include "process.h"
#include "readFile.h"

int main() {
int numIn=2, numOut=1;

struct data *allData=readData(numIn, numOut);

process(allData, numIn, numOut);

return 0;
}
<小时/>
// readFile.h

#include <stdio.h>
#include <stdlib.h>

struct data {
double *in;
double *out;
};


struct data * readData(int numIn, int numOut) {
//here I initialize and fill an "allData" array of struct data

return allData;
}
<小时/>
//process.h

#include <stdio.h>
#include <stdlib.h>
#include "readFile.h"

int process(struct data * allData, int numIn, int numOut) {

return 0;
}

如果我删除“process.h”并尝试在主文件中打印“allData”,则会打印正确的数据而不会出现错误,但是当我尝试处理“process.h”中的数据时,我收到此编译错误:

In file included from C:\...\main.c:4:0:
C:\...\readFile.h:11:8: error: redefinition of 'struct data'
struct data
^
In file included from C:\...\process.h:11:0,
from C:\...\main.c:2:
C:\...\readFile.h:11:8: note: originally defined here
struct data
^
In file included from C:\...\main.c:4:0:
C:\...\readFile.h:24:15: error: conflicting types for 'readData'
struct data * readData(int numIn, int numOut)
^
In file included from C:\...\process.h:11:0,
from C:\...\main.c:2:
C:\...\readFile.h:24:15: note: previous definition of 'readData' was here
struct data * readData(int numIn, int numOut)
^

最佳答案

不要在.h文件中放置任何代码

.h 文件用于数据声明、外部变量声明和函数声明。

.c 文件是包含变量和函数定义的正确位置。

将所有代码从 .h 文件移至 .c 文件

还添加 .h 文件防护。这只是定义。如果这个定义已经被定义 - 这意味着这个文件已经被包含并且它的内容应该被跳过

#ifdef MYGUARD_H
#define MYGUARD_H

/* .h file content

#endif

关于c - 如何在c中管理全局结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54270611/

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