【发布时间】:2014-06-18 18:47:28
【问题描述】:
我想知道是否可以像在 c++ 中那样动态初始化 struct 以进行函数调用:
struct point {
int x;
int y;
};
some_function(new point(x,y));
谢谢:)
【问题讨论】:
标签: c function struct on-the-fly
我想知道是否可以像在 c++ 中那样动态初始化 struct 以进行函数调用:
struct point {
int x;
int y;
};
some_function(new point(x,y));
谢谢:)
【问题讨论】:
标签: c function struct on-the-fly
是的。您可以使用 C99 中引入的compound literals。
some_function((struct pint) {5, 10});
【讨论】:
struct 无论如何都是按值传递的(这个问题是关于C,而不是C++),所以关于它的生命周期的争论是无声的。
some_function((struct point){5, 10}); 也同样有效。
some_function(&(struct pint) {5, 10})也可以。这在某种意义上更接近于原始请求,因为它产生了一个指针参数(但它当然不会产生动态生命周期)。
您可以在 C 中执行此操作并像这个人说的那样调用您的函数,但是您需要将标志 -std=c99 添加到您的 gcc 调用行,否则如果您使用一些 -W* 可能会失败标志。
【讨论】: