有时候,当一个库源可用时,它必须在一般情况下支持可变参数,但实际上这些参数通常是常量。因此,通过特殊处理常量参数(例如使用静态数组而不是堆分配)来优化事物可能是可能的,但为此需要首先确定某些内容是否为常量(或者可以定义一些宏,但这不太方便)。以下是一个可行的实现。
更新:这里也有一个链接:http://codepad.org/ngP7Kt1V 问题:
更新:这里也有一个链接:http://codepad.org/ngP7Kt1V 问题:
- 它真的是有效的C++吗?
- 有没有办法摆脱这些宏?(is_const()不能是函数,因为函数依赖关系在数组大小表达式中无法工作;同样,它不能是模板,因为那将不接受变量参数。)
#include <stdio.h>
is_const()
仅适用于 x>=0,但是技巧(使结果在编译时未定义)也适用于is_const(X) | is_const(-X)
,因此只有当all x: x!=INT_MIN
时,is_const
才能正常工作。 - Nordic Mainframesizeof(int)
和sizeof(char)
不能保证不同(实际上有一些处理器它们的大小相同),因此您应该使用类似于char[2]
的东西。(另一方面,我看到硬编码常量,所以我想可移植性可能不是一个问题。) - ymett