Моя кодовая база - C ++ в NXP ARM M4 с пользовательской ОС C ++.
Существует определенная функция DWB()
aka DangerWillRobinson()
, которая при вызове может иметь неожиданнуюэффекты (которые действительны при правильном использовании).
DWB()
может быть вызван очень глубоко вложенным способом, как в A()->B()->C()->D()->...->DWB()
Я хочу, чтобы автор любых функций, непосредственно иликосвенно, позвоните DWB()
, чтобы узнать, что DWB()
называется и Я хочу заставить их признать, что они знают, что DWB()
называется.
Я знаю, что это может быть достигнутопарсинг сгенерированных деревьев вызовов компоновщика с использованием Python, но я бы предпочел, чтобы это было ошибкой во время компиляции.
Вот как я бы хотел, чтобы это работало:
void A()
{
B();
}
Автор переходит к компиляции:
ОШИБКА: вызывается DWB ().Пожалуйста, подтвердите.
Затем автор думает о побочных эффектах вызова DWB()
и не находит проблем.
void A()
{
// some macro-thing ... ?
B();
}
Если возможно, я не хочу, чтобы это выполняласьпроверять.Я думаю, что в теории это возможно.Если Base
наследуется, я бы хотел, чтобы все возможные классы вызовов рассматривались;Это нормально, если ни один из них даже не создан, но не идеален.
ВОПРОС
Возможны ли эти метаданные / поведение функции во время компиляции?