Использовать условную компиляцию, чтобы проверить, есть ли у пользователя SQL Native Client? (ODB C) - PullRequest
0 голосов
/ 27 марта 2020

Я хочу использовать sqlncli.h, но только если он доступен для пользователя, а если нет, я хочу использовать менее оптимальный, но функциональный код замены (я действительно просто хочу использовать несколько активных наборов результатов, другие СУБД не Кажется, для этого не требуется специальная конфигурация). У пользователя будут исходные файлы, и он будет собирать их самостоятельно на своем компьютере, так что я могу использовать какой-нибудь флаг препроцессора / условной компиляции для этого?

Я знаю, что есть флаги типа _WIN32 I можно использовать, чтобы проверить, включен ли пользователь windows (что я и делаю, потому что windows пользователям необходимо windows.h, чтобы использовать мой код).

Это ODB общего назначения C lib, поэтому я не знаю, будет ли пользователь даже подключаться к SQL серверу или нет.

Это мой единственный вариант, чтобы пользователь указал, хочет ли он использовать SQL сервер + собственный клиент (от например, для определения некоторого флага)

Ответы [ 2 ]

1 голос
/ 27 марта 2020

Если у вас есть современный компилятор (c ++ 17), вы можете использовать __has_include для проверки существования определенного файла:

#if __has_include(<sqlncli.h>)
0 голосов
/ 27 марта 2020

Подобные вещи обычно обрабатываются генератором системы сборки, таким как CMake или Automake. Как часть создания ваших сценариев сборки, вы пытаетесь скомпилировать простую программу, которая включает соответствующую библиотеку. Если это удастся, вы либо измените способ генерации сценариев сборки для компиляции разных файлов, и / или установите несколько флагов препроцессора, чтобы вы могли #ifdef выбрать правильную реализацию.

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