2015-05-14 1 views
1

Я использую идентификатор доступа 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?

ответ

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 
+1

К сожалению, это не работает поскольку имена CURLOPT_ * являются частью перечисления, не определены ... –