Реализация RAII в чистом C? - PullRequest
       31

Реализация RAII в чистом C?

55 голосов
/ 15 декабря 2008

Можно ли реализовать RAII в чистом C?

Я предполагаю, что это невозможно каким-либо вменяемым способом, но, возможно, возможно ли это с помощью какого-то подвоха. В голову приходит перегрузка стандартной функции free или, возможно, перезапись адреса возврата в стеке, чтобы при возврате функции вызывать какую-то другую функцию, которая каким-то образом освобождает ресурсы? Или, может быть, с каким-нибудь трюком setjmp / longjmp?

Это чисто академический интерес, и я не собираюсь на самом деле писать такой непереносимый и сумасшедший код, но мне интересно, возможно ли это вообще.

Ответы [ 11 ]

0 голосов
/ 15 декабря 2008

Эй, вы пытаетесь воссоздать CFront !

...