Считается ли хорошей практикой наличие условий в публичных заголовочных файлах?

В моей библиотеке C есть некоторые дополнительные функции, и с помощью automake пользователь может включать и выключать их, предоставляя флаги для настройки.

Если функция отключена, эта функция не будет скомпилирована.

Однако у меня вопрос: следует ли в таком случае также удалить прототип функции из общедоступных заголовков?

Кажется, не очень хорошей идеей иметь прототипы функций, которые не компилируются, но такжемне кажется не очень хорошей идеей устанавливать разные публичные заголовки в зависимости от конфигурации библиотеки. (Аналогично тому, как не рекомендуется устанавливать config.hв каталог общедоступных заголовков.)

Каков наилучший подход для общедоступных заголовков, когда речь идет о дополнительных функциях? Если пользователь пытается использовать отключенную функцию, должна ли ошибка возникать во время компиляции или во время компоновки? Для такой ситуации должна быть стандартная практика. (Я предпочитаю соблюдать стандарты кодирования GNU, если есть несколько идей, но я не знаю стандарта GNU по этому вопросу.)

10
задан Steve 9 March 2012 в 18:34
поделиться