如何获取和比较 libcurl 版本?
How to get and compare libcurl version?
我正在使用 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 版本进行比较。
有人可以帮助我吗?
如果你想在 运行 时检测版本,你可以使用 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
正如丹尼尔所说,甚至只是:
#ifdef CURLOPT_XOAUTH2_BEARER
/* This version supports this option */
#else
/* No, it doesn't */
#endif
我正在使用 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 版本进行比较。
有人可以帮助我吗?
如果你想在 运行 时检测版本,你可以使用 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
正如丹尼尔所说,甚至只是:
#ifdef CURLOPT_XOAUTH2_BEARER
/* This version supports this option */
#else
/* No, it doesn't */
#endif