У меня есть это в ball.h:
#ifndef BALL_H_
#define BALL_H_
...
typedef void *PBALL ;
...
#endif
в paddle.h У меня есть:
#ifndef PADDLE_H_
#define PADDLE_H_
...
int contact_made(struct pppaddle*, PBALL);
...
#endif
Я получаю ошибку в paddle.h, потому что он не знаето ПБАЛЛ.Поэтому, если я добавлю:
#ifndef BALL_H_
#include "ball.h"
#endif
в paddle.h (с оператором if или без него), он будет работать в моей среде Cygwin.Но в Linux, когда я иду к компиляции, я получаю: «множественное определение` newPBALL '»в исходном файле, который использует PBALL, а также в функциях, определенных в ball.h.Как я могу получить paddle.h для понимания PBALL, не сталкиваясь с этими проблемами в Linux?
Мой файл ball.c:
struct newball {
int x_pos, x_dir, y_pos, y_dir, y_delay, y_count, x_delay, x_count;
char symbol;
};
typedef struct newball *ball_struct_ptr;
struct newball the_ball;
#include "ball.h"
PBALL newPBALL() {
the_ball.y_pos = Y_INIT;
the_ball.x_pos = X_INIT;
the_ball.y_count = the_ball.y_delay = Y_DELAY;
the_ball.x_count = the_ball.x_delay = X_DELAY;
the_ball.y_dir = 1;
the_ball.x_dir = 1;
the_ball.symbol = DFL_SYMBOL; //Set the symbol of the ball
PBALL ptr = &the_ball;
return ptr;
}