A static
ограничит область действия файлом, но будет только одна из них.Это означает, что вы можете когда-либо иметь только одного пользователя из этого набора функций, если в этом есть какое-либо состояние.
Лучше иметь дескриптор с жизненным циклом, который вы могли бы охватить, как бы вам ни понадобилось.То есть:
Foo * handle = foo_create(); // Allocates and initializes a structure
foo_operation1(handle);
foo_operation2(handle);
foo_destroy(handle); // Deallocates the structure
Это гарантирует, что только код, который знает о handle
, сможет сделать все, что его изменит.