У меня есть radius2 = x*x +y*y + z*z
.
Я хочу переключить 3D в 2D (т.е. radius2 = x*x + y*y
) без удаления z * z.
Я попытался определить макрос
1.h [заголовочный файл для переключения 2D / 3D]
#define DIMENSIONS 2 //or, 3
2.h
#if DIMENSIONS == 2
#define EXPAND(a,b,c) a, b
#endif
#if DIMENSIONS == 3
#define EXPAND(a,b,c) a, b, c
#endif
main.c
#include "stdio.h"
#include "1.h"
#include "2.h"
main(){
int x, y, z, radius2;
x = 2;
y = 3;
z = 4;
radius2 = EXPAND(x*x, +y*y, +z*z);
printf("%d", radius2);
}
При компиляции я получаю эту ошибку:
Undefined symbols:
"_EXPAND", referenced from:
_main in ccsC4tfr.o
ld: symbol(s) not found
collect2: ld returned 1 exit status