設定 C++ カスタム修飾子をビルドする方法はありますか?



カスタムビルドとは (1)

カスタム型修飾子(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()
{

}

おそらく、許可する/許可したくないすべての機能に対して、これを透過的に行うクレイジーマクロを書くことができます。





qualifiers