Erstellen eines benutzerdefinierten C++-Typqualifizierers

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Erstellen eines benutzerdefinierten C++-Typqualifizierers

by Anonymous » 17 Jan 2025, 10:56

Ich möchte einen benutzerdefinierten Typqualifizierer/Funktionsspezifizierer auf Kompilierungsebene „intg“ haben, der genauso funktioniert wie const oder noexclusive in C++: Es gibt automatische Vorkompilierungs-/Kompilierungszeitfehler, wenn seine beiden Regeln verletzt werden:
  • Eine „intg“-Funktion kann keine Nicht-„intg“-Funktionen aufrufen. (Dasselbe gilt, wenn wir nicht-konstante Funktionen nicht in konstanten Funktionen aufrufen können)
  • „intg“-Variablen können nur in „intg“-Funktionen geändert werden („intg“-Variablen fungieren als Konstante, wenn sie sich in anderen Funktionen befinden)
Dieser Typqualifizierer sollte das Kompilierungsergebnis nicht ändern , dienen nur als zusätzliche Sicherheitsbarriere.
Wie würde ich vorgehen? Tun Sie dies in C++ oder fügen Sie es einem Compiler hinzu?
Beispiel:

Code: Select all

    intg float a = 0;
float b = 0;

void DoStuff() intg
{
// Doing stuff...
}

void Foo() intg
{
DoStuff() // Allowed!
DoThings() // Allowed!

a = 2; // Allowed!
b = 2; // Allowed!

// And other stuff...
}

void DoThings()
{
// Doing thing...
}

void Bar()
{
DoStuff() // Compilation error!
DoThings() // Allowed!

a = 2; // Compilation error!
b = 2; // Allowed!
}

Top