如何获取和比较libcurl版本?

use*_*648 2 c version libcurl

我正在使用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 );但我不知道struct中的数据是什么样子以及如何将它们与7.33版本进行比较。有人能帮我吗?

Dan*_*erg 5

如果要在运行时检测版本,可以使用如下样式的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");
}
Run Code Online (Sandbox Code Playgroud)

如果您希望进行检测构建,可以使用如下预处理器#if表达式:

#include <curl/curl.h>
#if LIBCURL_VERSION_NUM >= 0x072100
 /* this is 7.33.0 or later */
#else
 /* work-around for older libcurls */
#endif
Run Code Online (Sandbox Code Playgroud)