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?