Вы пытаетесь сгруппировать код в соответствии со структурой. Сгруппировка по файлам. Вы помещаете все функции и внутренние переменные в заголовок или заголовок и файл «.o» объекта, скомпилированный из исходного файла c.
Нет необходимости повторно изобретать объектную ориентацию с нуля для программы на C, которая не является объектно-ориентированным языком.
Я видел это раньше. Странная вещь. У некоторых кодеров есть отвращение к передаче объекта, который они хотят изменить, в функцию для его изменения, хотя это стандартный способ сделать это.
Я обвиняю C++, потому что скрывал тот факт, что объект класса всегда является первым параметром в функции-члене, но он скрыт. Таким образом, похоже, что он не передает объект в функцию, даже если это так.
Client.addClient(Client& c); // addClient first parameter is actually
// "this", a pointer to the Client object.
C гибкий и может принимать передаточные предметы по ссылке.
Функция C часто возвращает только статусный байт или int, и это часто игнорируется. В вашем случае правильная форма может быть
err = addClient(container_t cnt, client_t c);
if (err != 0)
{ fprintf(stderr, "could not add client (%d) \n", err);
addClient бы в client.h или Client.c
Вы не можете иметь функции в структурах в C; вы можете попытаться примерно имитировать это, указав указатели на функции. – Fingolfin
Являются ли функции указателями приемлемой заменой? http://stackoverflow.com/a/840703/635678 –