在我的代码中,我一直在重写static_cast<int *>
大约一百万次,有没有办法重新定义一个关键字,这样每当我调用它时它会做同样的事情?
例如
cast
会与static_cast<int *>
答案 0 :(得分:1)
要求更轻松地做一些危险的事情...
是的,有很多方法可以实现您的要求,包括
C ++模板,
宏定义,
编辑器快捷方式,
自定义预处理,
训练有素的猴子来修复代码。
但是你所做的就是让你的代码更不容易理解。
相反,试着找出你经常如何丢失类型信息,这样你就必须手动把它放回去,可以这么说。
通常的解决方案是,不首先丢弃类型信息。
答案 1 :(得分:1)
你的意思是这样吗?
#define SCAST(T,X) static_cast<T>(X);
我应该警告你,尽管过度使用这样的定义可能会使你的代码模糊不清,难以理解。
更重要的是,您必须注意宏,因为它们可能导致很难找到错误,例如:
#define SQUARE(X) = X*X;
如果你用x++
调用它,那么预处理器会进行字面替换,你最终会得到(x++)*(x++);
,这意味着它完全不是你正在寻找的答案因为替换发生在幕后,你很难找到原因。
我建议您尽可能地查看模板函数或内联辅助函数,它是安全的,并且可以避免我指出的问题。
答案 2 :(得分:1)
static_cast
的好处是C ++程序员无需查找#define
或其他语句即可准确识别它是什么。我强烈建议您继续使用static_cast
。
但是,我的假设是您的问题是所需的击键次数,因此最好的解决方案是使用支持宏的文本编辑器。这样,最终保存的代码确实使用标准static_cast<T>(x)
语法,但您可能只需要键入诸如 [ s c之类的内容 ] 标签 Ť 标签 X 标签
有关如何执行此操作的信息将在此类编辑的文档中找到。我不是高度可定制的编辑的忠实粉丝,所以我不知道具体细节。