Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++17 更标准的“属性”(警告(";msg";) 在我的C++库中,我有一个函数,仍然存在,1)用于调试2)用于小操作。 该功能基本上是更高效版本的一个非常缓慢的回退。 (举例来说,想想单个分配与memcpy之间的循环)>_C++17_Compiler Warnings_C++20_Deprecation Warning_Function Attributes - Fatal编程技术网

C++17 更标准的“属性”(警告(";msg";) 在我的C++库中,我有一个函数,仍然存在,1)用于调试2)用于小操作。 该功能基本上是更高效版本的一个非常缓慢的回退。 (举例来说,想想单个分配与memcpy之间的循环)>

C++17 更标准的“属性”(警告(";msg";) 在我的C++库中,我有一个函数,仍然存在,1)用于调试2)用于小操作。 该功能基本上是更高效版本的一个非常缓慢的回退。 (举例来说,想想单个分配与memcpy之间的循环)>,c++17,compiler-warnings,c++20,deprecation-warning,function-attributes,C++17,Compiler Warnings,C++20,Deprecation Warning,Function Attributes,因此,我希望在直接或间接调用该函数时发出警告。在没有警告的情况下,测试函数是否正在被实例化调用是不容易的,因为函数可能会通过几层模板代码被实例化调用 我发现GCC的\uuuuu属性(警告(“慢函数!”)做得很好 template<class T> __attribute__((warning("careful this fun is very slow, redesign your algorithm"))) void slow_function(T){...} 模板 __属性

因此,我希望在直接或间接调用该函数时发出警告。在没有警告的情况下,测试函数是否正在被实例化调用是不容易的,因为函数可能会通过几层模板代码被实例化调用

我发现GCC的
\uuuuu属性(警告(“慢函数!”)
做得很好

template<class T> 
__attribute__((warning("careful this fun is very slow, redesign your algorithm"))) 
void slow_function(T){...}
模板
__属性uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
void slow_函数(T){…}
然而,它不是标准的或与叮当声兼容

这种编译时警告有更好的替代方法吗?

看起来有一个标准的
[[deprecated(“msg”)]
属性也可以执行此任务,问题是它令人困惑,因为此函数没有任何不推荐的内容,它是为了方便而存在的


还有,我最近发现了一个<>代码> PrimaMag毒药,在这里可能是适用的,但是我不理解它是如何使用的,除了这个函数实际上是一个模板类的成员函数,例子不考虑这种情况。p> 根据您的解释,这根本不是“编译时警告”。您希望它在调用函数时发出,而不是在调用函数时发出。您说过“我希望在直接或间接调用该函数时立即发出警告”。调用函数是一个运行时操作,而不是编译时操作(除非函数是在编译时调用的,但我们不要吹毛求疵)。那么,是否因为存在可能导致调用函数的控制路径而需要编译时警告或消息?或者,当运行时消息被调用时,它应该被发出吗?@Nicolas,你是对的,我用错了词。我想在代码中实例化模板类的某个成员函数时发出警告。我更改了我的帖子。可能类似于

[[deprecated(…)]
?@user975989,是的,正如我所说,这就是我现在使用的,问题是这个函数没有什么不推荐的,这可能会让人困惑。我是d
[[不赞成(“这不是不赞成,这是一个警告:慢函数,重新设计你的算法”)]
我认为通过“慢函数,重新设计你的算法”,你实际上是在反对(字面意思是“表示不赞成”)这个函数,所以即使你在技术上没有“反对”它,使用
[[不赞成]]
。无论如何,您的目的是通知用户不应使用此函数,因此为什么不:)根据您的解释,这根本不是“编译时警告”。您希望它在调用函数时发出,而不是在调用函数时发出。您说过“我希望在直接或间接调用该函数时立即发出警告”。调用函数是一个运行时操作,而不是编译时操作(除非函数是在编译时调用的,但我们不要吹毛求疵)。那么,是否因为存在可能导致调用函数的控制路径而需要编译时警告或消息?或者,当运行时消息被调用时,它应该被发出吗?@Nicolas,你是对的,我用错了词。我想在代码中实例化模板类的某个成员函数时发出警告。我更改了我的帖子。可能类似于
[[deprecated(…)]
?@user975989,是的,正如我所说,这就是我现在使用的,问题是这个函数没有什么不推荐的,这可能会让人困惑。我是d
[[不赞成(“这不是不赞成,这是一个警告:慢函数,重新设计你的算法”)]
我认为通过“慢函数,重新设计你的算法”,你实际上是在反对(字面意思是“表示不赞成”)这个函数,所以即使你在技术上没有“反对”它,使用
[[不赞成]]
。无论如何,您的目的是通知用户不应使用此功能,因此为什么不:)