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

时间:2017-07-31 15:01:42

标签: c++ compile-time qualifiers

有没有办法实现自定义类型限定符(类似于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
}

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

1 个答案:

答案 0 :(得分:6)

也许你可以把这些函数放在一个类中,并让那些允许的类的朋友像这样:

#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()
{

}

你可以写一些疯狂的宏来透明地为你想要/不允许的每个功能做这件事。