[C] Makro mit Funktionsaufruf und Stringkonvertierung / Konkatenation

Cappaja

Erfahrenes Mitglied
Hallo,

ich würde gerne ein Makro basteln, welches die Funktion FUNC_A wie folgt aufruft:
FUNC_A("variable;input", variable, input)
und selbst folgendermaßen zu bedaten ist:
#define MAKRO(variable, input) (....)
Beide Übergabeparameter sollen also zu einem String zusammegebaut und zusätzlich als Variablen oder Werte an eine aufzurufende Funktion FUNC_A übergeben werden.

Dachte an sowas in der Art, aber bekomme es nicht hin:
#define MAKRO(variable, input) (FUNC_A(#variable ## ; ## #input, variable, input))

Für eine Hilfestellung wäre ich sehr dankbar!

Grüße

Cappaja
 
Hoi Cappaja

Sowas?

C++:
void foo(const std::string& input_value, int input, int value) {
    std::cout << input_value << ": " << input << "/" << value << std::endl;
}

#define FOO_CALL(input, value) \
    foo(#input ";" #value, input, value)

int main(int argc, const char* argv[]) {
    int a = 2;
    int b = 3;
    FOO_CALL(a, b);
}

Gibt dann:
a;b: 2/3

Grüsse
Cromon
 
Hallo Cromon,

ich programmiere zwar in C aber dein Ansatz war logisch und hat mir geholfen, danke dafür! Ich muss die Funktion natürlich zur Laufzeit aufrufen können. Mein Code sieht jetzt wie folgt aus, sollte es jemandem noch was bringen:

C++:
void foo(const char* desc, signed long int a, signed long int b)
{
    FUNC_A(desc, a, b);
}
#define CHECK_SINT(name, value) (foo(#name ";" #value, name, value))

Beste Grüße

Cappaja
 

Neue Beiträge

Zurück