Я определил следующую структуру в C:С макро с {}
typedef struct point{
float x;
float y;
float z;
} Point;
typedef Point Vector;
и следующий макрос:
#define sub(p1,p2) {p1.x-p2.x,p1.y-p2.y,p1.z-p2.z}
, который используется следующим образом:
void fun(Point p0, Point p1){
Vector u;
u=sub(p1,p0);
}
От то, что я прочитал, должно работать, или, может быть, мне не хватает чего-то, может быть, даже очевидного ... но я получаю следующую ошибку: я не понимаю, позировала выглядеть сделать:
error: expected expression before '{' token
Поэтому в основном я просто хочу, чтобы получить то же самое, как:
struct point u={p1.x-p0.x,p1.y-p0.y,p1.z-p0.z}
Я действительно понятия не имею, что я делаю неправильно ... Спасибо.
[EDIT] включил некоторые дополнительные функции, чтобы вы могли видеть, где я думаю, что моя ошибка была. Не инициализируется с объявлением переменной, потому что после изменения
Vector u;
u=sub(p1,p0);
в
Vector u=sub(p1,p0);
Это работает, но я до сих пор не понимаю, почему.
показать весь код, ошибка, вероятно, не в том фрагменте, который вы показываете – ouah
Вы пытались скомпилировать его без макроса, например. 'Вектор u = {p1.x-p0.x, p1.y-p0.y, p1.z-p0.z};'? –
yes Я скомпилирован без макроса, и он работает, и я использую gcc –