Имитация конструктора статических объектов в C

Я хочу иметь глобальную переменную names, которая выглядит так

char* names[NAMES_CAP];
int names_len = 0;

И я хочу, чтобы каждый, кто обращается к этой библиотеке, мог добавить элемент в этот список.

Это легко сделать из main.

int main(int argc,char**argv) {
    names[names_len++] = "new name";
    names[names_len++] = "new name 2";
}

но что если я хочу сложить две библиотеки? (т.е. моя библиотека, libnames, хранит глобальную переменную. И если кто-то ссылается на libnameuser, который использует libnames, он автоматически добавит все имена, определенные в libnameuser, в массив names в libnames.

Есть ли способ сделать это?

В C++ я могу вставить names[names_len++] = "..." в конструктор глобального объекта, и он должен быть вызван. Но могу ли я сделать это с обычным C?

5
задан Chi-Lan 21 October 2011 в 11:33
поделиться