2015-05-14 143 views
1

我正在使用libcurl設置OAuth 2.0訪問令牌。由於添加了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"); 
} 

如果你喜歡做的檢測構建時,你可以使用一個預處理器#如果這樣的表達:

#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_ *名稱是枚舉的一部分,未定義... –