aufgerufen werden kann ich mich gefragt, ob es möglich ist, ein Makro zu schreiben, die wie folgt verhält:C Präprozessor: ein Makro #define, die ohne Klammern
void Func(int x)
{
printf("%d",x);
}
#define func Func x //or something
int main()
{
func 10; //<---- remove parenthesis
}
In diesem Fall wird func
auf die reale Funktion zeigen Func
, und 10 wird sein Argument ohne die Klammer sein.
Ich versuche, etwas ähnlich den new
Operator in C++ zu erreichen, aber in C.
Beispiel:
class Base* b = new(Base);
In diesem Fall class
ist ein Makro für struct
, ist new
eine Funktion welches einen Funktionszeiger annimmt, und Base
ist eine Funktion, die Speicher für struct Base
reserviert.
Ich möchte den Code, so etwas umschreiben:
class Base* b = new Base;
Welche möglich sein wird, wenn ich mit einem Makro kann kommen :)
Sollte kein Makroparameter in Klammern sein? – Matso
Nun, diese "Funktionsmakros" haben normale Funktionssyntax, wie '#define func (x) Func (x)'. Der Anruf wäre wie eine normale Funktion, z.B. 'func (10)'. Ist es das was du willst? –
@Ehsan es ist keine C++ Frage, sein reines C und haben alles mit Preprocessors Mate zu tun – Mamma