我对两种 Action 的表现有疑问(以任何方式)这个问题很简单,但有一个大问题(当有两种方法时,哪一种更好)
我想用C语言创建结构。这对我来说有两个选择
1-在.h文件中定义它并在程序中使用它
typedef struct {
int id;
} myStructure;
2 - 使用这种定义来定义这个结构
#define myStructure struct { int id; }
哪种方式更好?我知道我们更多地使用方式1,但我不知道为什么我认为第二种方式是定义的母方式 请比较这种方式(无论如何性能)
更新 1:
谢谢您的回答。在最后两个响应中,我得到了这个原因,如果我们想在函数参数中使用该变量,我们就不能使用第二种方法。这是真的,但只有一点。我们也可以将该函数设为宏函数,这样就可以解决问题。像这样的东西
#define myStructure struct { int id; }
#define FUNC(__MYSTRUCTURE) printf("%d", __MYSTRUCTURE.id)
int main() {
myStructure var1;
var1.id = 542;
FUNC(var1);
}
最佳答案
这两种方式实际上没有任何共同点。例如,如果使用宏版本,以下代码无效
myStructure *p1 = 0;
myStructure *p2 = 0;
p1 = p2; // <- Type mismatch
而 typedef
版本的行为将“按预期”。这意味着您的宏版本并未真正定义以任何方式“可重用”的类型。它可能“适用于”某些利基、狭窄和受限的目的,但它的可用性远不及 typedef
版本。
关于C 使用 typedef 或 #define 定义结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48344441/