Я искал документы GCC для определения макросов, и похоже, что то, что я хочу, не возможно, но я полагаю, что если это так, кто-то здесь узнает.
Что я хочу сделать, это определить этот макрос:
synchronized(x) {
do_thing();
}
, который расширяется до:
{
pthread_mutex_lock(&x);
do_thing();
pthread_mutex_unlock(&x);
}
В C ++ я мог бы просто создать SynchronizedBlock
объект, который получает блокировку в егоконструктор и разблокирует деструктор, но я понятия не имею, как это сделать на C.
Я понимаю, что мог бы использовать указатель на функцию в виде synchronized(x, &myfunction);
, но моя цель - заставить некоторый код на С выглядетькак Java, насколько это возможно.И да, я знаю, что это зло.