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