Как эмулировать конструктор или статический блок в C - PullRequest
3 голосов
/ 08 июня 2011

Я улучшаю инструмент.Обратите внимание, что этот инструмент будет связан с тестовой программой, которая будет иметь функцию main( ), поэтому мой инструмент не может иметь main.Этот инструмент имеет ряд функций, которые будет использовать тестовая программа.

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

Если бы это был C ++, я бы создал класс с конструктором, чтобы всякий раз, когда класс загружалсясначала вызывается конструктор, и я могу инициализировать свой таймер внутри конструктора.

Если бы это была Java, я просто создал бы глобальный статический блок и поместил бы код таймера внутри статического блока.

Но мой инструмент исключительно на C в Linux, так как я могу достичь этой цели?

Пожалуйста, помогите мне.

Ответы [ 2 ]

4 голосов
/ 08 июня 2011

Это похоже на ваш случай также:

Как мне заставить GCC __attribute__ ((конструктор)) работать под OSX?

Из документов GCC:

Конструктор
деструктор
конструктор (приоритет)
деструктор (приоритет)

Атрибут конструктор вызывает функция вызывается автоматически до выполнения входит в main (). Точно так же атрибут деструктора вызывает функцию автоматически после того, как main () имеет выполнено или вызван выход (). Функции с этими атрибутами полезно для инициализации данных, которые будут использоваться неявно во время выполнение программы.

2 голосов
/ 08 июня 2011

Запишите собственную замену для crt*.o объектного файла, который вызывает main(), и укажите ссылку на него при сборке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...