Bạn đang cố gắng nhóm mã theo cấu trúc. Nhóm C là theo tệp. Bạn đặt tất cả các hàm và các biến nội bộ trong một tiêu đề hoặc một tiêu đề và tệp ".o" đối tượng được biên dịch từ tệp nguồn ac.
Không cần thiết phải phát minh lại hướng đối tượng từ đầu cho một chương trình C, vốn không phải là một ngôn ngữ hướng đối tượng.
Tôi đã thấy điều này trước đây. Đó là một điều kỳ lạ. Những người lập trình, một số người trong số họ, có ác cảm với việc chuyển một đối tượng mà họ muốn thay đổi thành một hàm để thay đổi nó, mặc dù đó là cách tiêu chuẩn để làm như vậy.
Tôi đổ lỗi cho C ++, vì nó đã che giấu thực tế rằng đối tượng lớp luôn là tham số đầu tiên trong một hàm thành viên, nhưng nó bị ẩn. Vì vậy, có vẻ như nó không truyền đối tượng vào hàm, mặc dù nó là như vậy.
Client.addClient(Client& c);
C rất linh hoạt và có thể đưa mọi thứ đi qua bằng cách tham chiếu.
Hàm AC thường chỉ trả về một byte hoặc int trạng thái và thường bị bỏ qua. Trong trường hợp của bạn, một biểu mẫu thích hợp có thể là
err = addClient( container_t cnt, client_t c);
if ( err != 0 )
{ fprintf(stderr, "could not add client (%d) \n", err );
addClient sẽ ở trong Client.h hoặc Client.c