c++17 - 更标准的 __attribute__((warning("msg"))
问题描述
在我的 C++ 库中,我有一个仍然存在的函数,1) 用于调试 2) 用于小型操作。该功能基本上是更高效版本的非常缓慢的回退。(例如,考虑单个分配与 memcpy 的循环)>
出于这个原因,我想在函数被直接或间接实例化后立即发出警告。在没有警告的情况下,很难测试函数是否被实例化调用,因为函数可能通过几层模板代码被实例化调用。
我发现 GCC 的__attribute__((warning("slow function!")))
工作做得很好。
template<class T>
__attribute__((warning("careful this fun is very slow, redesign your algorithm")))
void slow_function(T){...}
但是它不是标准的或与clang不兼容。
这种编译时警告有更好的选择吗?
看起来有一个标准[[deprecated("msg")]]
属性也可以完成这项工作,问题是它令人困惑,因为这个函数没有被弃用,它是为了方便而存在的。
还有一个,我最近发现了一个#pragma poison
可能适用于这里,但是我不明白它是怎么用的,而且这个函数实际上是一个模板类的成员函数,例子中没有考虑这种情况。https://www.fluentcpp.com/2018/09/04/function-poisoning-in-cpp/
解决方案
推荐阅读
- javascript - 使用 JavaScript 和 Tampermonkey 更改网站中的文本
- ios - DispatchQueue 在 Swift 中不起作用的问题
- python - plotly 的移动平均线
- ios - 如何提示请求始终地理定位权限
- android - 维护多个套接字连接聊天应用程序
- asp.net - DOTNET EF 创建您自己的自定义命令
- android - FCM 在某些 Android 设备上未注册
- java - 在这个多线程 Java 应用程序中,似乎只有一个线程像顺序程序一样运行?
- c# - 需要将包含'/'的日期时间转换为'-'格式
- html - 我试图使用 BeautifulSoup 抓取一个网站