Im Makro 2 Parameter durch Makro ersetzen

Gast #2503707
Lesenswert?

Hallo,

ist es möglich mit Hilfe des C-Präprozessors auch die Parameter eines 
Makros zu ersetzen? Möchte vom Prinzip her folgendes machen:
1
#define f1(a, b)  a + b
2
#define c1        0x23
3
#define c2        0x12
4
#define c3        c1,c2
5

6
int main(void)
7
{
8
  int x;
9

10
  x = f1(c1, c2);
11
  x = f1(c3);
12
  while (1);
13
}

Beim Präprozessordurchlauf ergibt sich dann aber dieser Fehler:
1
$>gcc -E test.c
2
# 1 "test.c"
3
# 1 "<built-in>"
4
# 1 "<command-line>"
5
# 1 "test.c"
6
# 13 "test.c"
7
int main(void)
8
{
9
 int x;
10

11
 x = 0x23 + 0x12;
12
 x =test.c:18:11: error: macro "f1" requires 2 arguments, but only 1 given
13
 f1;
14
 while (1);
15
}

Gibts da einen Trick c3 irgendwie anders mit c1 und c2 zu definieren, 
sodass der Fehler nicht mehr auftritt?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren