我尝试使用特殊的"构造函数"以更加面向对象的方式包含 alloca 的宏来实现(就像一个实验,没有什么严重的事)。返回实例将需要的大小以及指向应该初始化它的函数的指针。
使用更多语句编写它很简单:
void (*initf)(Type *inst);
Type *obj = alloca(Type::init(&initf, ...));
initf(obj);
显然,如果它不是 alloca ,那么将它包装在函数中会起作用,但这需要内联。
是否可以创建一个执行此类任务的表达式,并返回obj
作为结果?设计不必保持不变,但通常,应该有一个函数接受构造函数应该采用的参数并生成大小和初始化函数。如果 alloca 作为参数std::pair<size_t,void(*)(void *ptr)>
,则会更容易。
我怀疑它在C ++中可能无法实现,但仅仅是为了好奇,可以在C中完成吗?似乎最近添加了许多用于宏的功能。