gpt4 book ai didi

c++ - 已弃用 API 调用的编译时检测?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:20:15 24 4
gpt4 key购买 nike

C++11 中是否有任何新的、很酷的功能允许我们在编译时检测现在标记为已弃用的 API 是否实际被某人调用?

从我读到的有关新 static_assert 功能的内容来看,它似乎不够灵活,无法用于此类分析。

但是我们还有什么可以用的吗?

可选地,boost 中是否有任何允许这种编译时检查的东西?

最佳答案

对于 C++14,您将有以下选择:

#include <iostream>

void foo( int v ) { std::cout << v << " "; }

[[deprecated("foo with float is deprecated")]]
void foo( float v ) { std::cout << v << " "; }

[[deprecated("you should not use counter anymore")]]
int counter {};

int main() {
foo( ++counter );
foo( 3.14f );
}

Clang 给出编译输出(here):

main.cpp:12:10: warning: 'counter' is deprecated [-Wdeprecated-declarations]
foo( ++counter );
^
main.cpp:9:5: note: 'counter' has been explicitly marked deprecated here
int counter {};
^
main.cpp:13:3: warning: 'foo' is deprecated [-Wdeprecated-declarations]
foo( 3.14f );
^
main.cpp:6:6: note: 'foo' has been explicitly marked deprecated here
void foo( float v ) { std::cout << v << " "; }
^
2 warnings generated.

关于c++ - 已弃用 API 调用的编译时检测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21526761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com