You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OPENSSL_NO_DEPRECATED_3_0含义解析:该宏代表启用还是禁用废弃函数?

关于OPENSSL_NO_DEPRECATED_3_0宏的含义

直接拆解这个宏的作用:

  • OPENSSL_NO_DEPRECATED_3_0字面意思是“不要OpenSSL 3.0的废弃内容”,实际行为是:如果编译时定义了这个宏,代码中标记为OSSL_DEPRECATEDIN_3_0的废弃函数会被排除,不会编译进程序;如果没定义这个宏,这些废弃函数就会被包含,程序可以调用它们。

结合你给出的代码片段来看:

# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 size_t HMAC_size(const HMAC_CTX *e);
OSSL_DEPRECATEDIN_3_0 HMAC_CTX *HMAC_CTX_new(void);
OSSL_DEPRECATEDIN_3_0 int HMAC_CTX_reset(HMAC_CTX *ctx);
OSSL_DEPRECATEDIN_3_0 void HMAC_CTX_free(HMAC_CTX *ctx);
# endif

这段代码用#ifndef(即“如果未定义”)判断:当OPENSSL_NO_DEPRECATED_3_0没有被定义时,才会展开下面这些带OSSL_DEPRECATEDIN_3_0标记的废弃函数声明。反过来,如果定义了OPENSSL_NO_DEPRECATED_3_0,这段代码会被跳过,废弃函数不会被声明,自然无法调用。

简单总结:

  • 定义OPENSSL_NO_DEPRECATED_3_0 → 禁用OpenSSL 3.0的废弃函数
  • 不定义OPENSSL_NO_DEPRECATED_3_0 → 启用OpenSSL 3.0的废弃函数

内容的提问来源于stack exchange,提问作者kelsonic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 19:22:47