有没有办法构建C++自定义限定符?

Is there a way to build C++ custom qualifiers?

本文关键字:自定义 C++ 构建 有没有      更新时间:2023-10-16

有没有办法实现自定义类型限定符(类似于 const(?我只想允许在具有相同资格的函数中调用具有正确资格的函数。

假设我会:

void allowedFunction();
void disallowedFunction();
//Only allowed to call allowed functions.
void foo()
{
allowedFunction();
disallowedFunction(); //Cause compile time error
}
//Is allowed to call any function it wants.
void bar()
{
allowedFunction();
disallowedFunction(); //No error
}

我想这样做的原因是我想确保在特定线程上调用的函数只调用实时安全函数。由于许多应用程序需要硬实时安全线程,因此在编译时使用某种方法来检测锁将保证我们不会发生许多难以检测的运行时错误。

也许您可以将函数放在一个类中,并使允许的函数成为该类的朋友,如下所示:

#include <iostream>
class X
{
static void f(){}
friend void foo(); // f() is only allowed for foo
};
void foo() // allowed
{
X::f();
}
void bar() // disallowed
{
//X::f();  // compile-time error
}
int main()
{
}

你可以写一些疯狂的宏,对你想要允许/禁止的每个函数透明地执行此操作。