我试图提出(只是作为一个实验,没什么严重的)一个宏,它以更面向对象的方式包装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 中完成吗?最近似乎添加了许多用于宏的功能。