当一个结构在单独的文件中定义时,如何将它们嵌套到另一个结构中?
How to nest a struct into another struct when they're defined in separate files?
我已经搜索过这个问题的答案,但是很难找到任何东西,因为这个问题很难用词来表达。
假设我们有 file1.h 定义了一个结构:
//file1.h
struct foo{
int param1;
...
};
稍后我想将这个 foo 结构合并到另一个文件中定义的通用结构 bar 中:
//file2.h
#include "file1.h"
struct bar{
struct foo foo1;
int param
...
}
我希望它是相同的结构定义,这样我就不必修改具有相同参数的两个结构,并且我不想使用指针,因为我有一些序列化,比如在 bar 上运行的例程。另外,我希望 foo 在 file1.h 中定义,这样我就不必每次使用 file1 的函数时都在别处定义它。这可能吗,这甚至是个好主意吗?
(我正在尝试实现模块化,其中 file1.c 可以单独使用或直接绑定到 file2 中的代码中,而无需在所有地方重新定义结构)
这是很有可能的,到处都在使用。
//file2.h
#include "file1.h"
struct bar {
struct foo foo;
int param;
...
};
#include
指令告诉预处理器将 file1.h 的所有内容转储到 file2.h.
这就是你一直在做的事情。您键入 #include <stdio.h>
以获取 printf
、scanf
等函数的减法。这自然适用于结构、类型和其他东西。如果操作正确,您甚至可以共享变量。
您需要进行一些调整。
//file2.h
#include "file1.h" // <===================== include file here
struct bar {
struct foo var_foo; // <================ fix syntax here
int param
};
您将访问 struct bar
中嵌入的 struct foo
的字段,如下所示:
#include "file2.h"
int main() {
struct bar var_bar;
var_bar.var_foo.param1 = 0;
}
我已经搜索过这个问题的答案,但是很难找到任何东西,因为这个问题很难用词来表达。
假设我们有 file1.h 定义了一个结构:
//file1.h
struct foo{
int param1;
...
};
稍后我想将这个 foo 结构合并到另一个文件中定义的通用结构 bar 中:
//file2.h
#include "file1.h"
struct bar{
struct foo foo1;
int param
...
}
我希望它是相同的结构定义,这样我就不必修改具有相同参数的两个结构,并且我不想使用指针,因为我有一些序列化,比如在 bar 上运行的例程。另外,我希望 foo 在 file1.h 中定义,这样我就不必每次使用 file1 的函数时都在别处定义它。这可能吗,这甚至是个好主意吗?
(我正在尝试实现模块化,其中 file1.c 可以单独使用或直接绑定到 file2 中的代码中,而无需在所有地方重新定义结构)
这是很有可能的,到处都在使用。
//file2.h
#include "file1.h"
struct bar {
struct foo foo;
int param;
...
};
#include
指令告诉预处理器将 file1.h 的所有内容转储到 file2.h.
这就是你一直在做的事情。您键入 #include <stdio.h>
以获取 printf
、scanf
等函数的减法。这自然适用于结构、类型和其他东西。如果操作正确,您甚至可以共享变量。
您需要进行一些调整。
//file2.h
#include "file1.h" // <===================== include file here
struct bar {
struct foo var_foo; // <================ fix syntax here
int param
};
您将访问 struct bar
中嵌入的 struct foo
的字段,如下所示:
#include "file2.h"
int main() {
struct bar var_bar;
var_bar.var_foo.param1 = 0;
}