Я использую идентификатор доступа OAuth 2.0 для libcurl. Начиная с версии libcurl 7.33 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XOAUTH2_BEARER, char *token);
. Теперь мне нужно получить версию libcurl и сравнить ее с 7.33. Если версия 7.33 или выше, я буду использовать CURLOPT_XOAUTH2_BEARER, иначе я сделаю что-то еще. Я знаю, что должен как-то использовать curl_version_info_data *curl_version_info(CURLversion type);
, но я понятия не имею, как выглядят данные в структуре и как их сравнить с версией 7.33. Может кто-нибудь мне помочь?Как получить и сравнить версию libcurl?
1
A
ответ
2
Если вы хотите, чтобы обнаружить версию во время выполнения, вы можете использовать curl_version_info() в стиле, как это:
curl_version_info_data *d = curl_version_info(CURLVERSION_NOW);
/* compare with the 24 bit hex number in 8 bit fields */
if(d->version_num >= 0x072100) {
/* this is libcurl 7.33.0 or later */
printf("Succcess\n");
}
else {
printf("A too old version\n");
}
Если вы предпочитаете делать обнаружения сборки времени, вы можете использовать препроцессор #if выражение как это:
#include <curl/curl.h>
#if LIBCURL_VERSION_NUM >= 0x072100
/* this is 7.33.0 or later */
#else
/* work-around for older libcurls */
#endif
0
Как сказал Даниэль, или даже просто:
#ifdef CURLOPT_XOAUTH2_BEARER
/* This version supports this option */
#else
/* No, it doesn't */
#endif
К сожалению, это не работает поскольку имена CURLOPT_ * являются частью перечисления, не определены ... –