У меня есть ситуация как в C, так и в C ++, которую лучше всего решить с помощью чего-то вроде декораторов типа Python: у меня есть несколько функций, которые я ' Мне бы хотелось обернуть что-то еще, чтобы перед входом функции выполнялись некоторые операторы, а когда она покидает выполнение, выполнялись другие функции.
Например, у меня есть несколько функций в файле библиотеки C, которые при вызове должны блокировать семафор и перед возвратом управления вызываемому объекту следует освободить семафор. без блокировки они имеют следующую структуру:
int f1(int)
{
...
...
}
int f2(char*)
{
....
}
int f3(blabla)
{
....
}
... fn(...)
Я хотел бы определить глобальный семафор, который должен быть заблокирован перед вызовом каждой из этих функций и освобожден, когда функция будет возвращена. Я хотел бы сделать это как можно проще; что-то близкое к этому:
#lockprotected
int f1(int)
{
... /* nothing changed over here */
}
#endlockprotected
или что-то вроде
int f1(int)
{
... /* nothing changed over here */
}
#lockprotected f1
Чего я не хочу, так это:
Какой способ был бы наиболее элегантным?