Выражение-локальная переменная

Я попытался придумать (просто как эксперимент, ничего серьезного) с макросом, который оборачивает alloca более объектно-ориентированным способом, используя специальный "конструктор", который возвращает размер, который понадобится экземпляру, вместе с указателем на функцию, которая должен инициализировать это.

Писать, что использование большего количества утверждений просто:

void (*initf)(Type *inst);
Type *obj = alloca(Type::init(&initf, ...));
initf(obj);

Очевидно, что перенос этой функции в функцию сработал бы, если бы это было нечто иное, чем alloca, но это должно быть встроено.

Можно ли сделать выражение, которое выполняет такую ​​задачу, возвращая obj как его результат? Проект не должен оставаться прежним, но обычно должна быть функция, принимающая аргументы, которые должен принимать конструктор, и производящая функцию size и initializer. Если в качестве параметра взяли alloca std::pair<size_t,void(*)(void *ptr)>все было бы намного проще.

Я подозреваю, что это не может быть достижимо в C++, но просто для любопытства, это может быть сделано в C? Кажется, в последнее время было добавлено много функций, предназначенных для макросов.

0 ответов

Другие вопросы по тегам