0

在我的代码中,我已经重写static_cast<int *>了大约一百万次,有没有办法重新定义关键字,以便每当我调用它时它都会做同样的事情?

例子

cast会做同样的事情static_cast<int *>

4

3 回答 3

1

寻求更简单的方法来做一些危险的事情……

是的,有很多方法可以完成您的要求,包括

  • C++ 模板,

  • 宏定义,

  • 编辑器快捷方式,

  • 自定义预处理,

  • 训练有素的猴子修复了代码。

但是你所做的只是让你的代码更难理解。

相反,试着弄清楚你为什么经常丢失类型信息,所以你不得不用手把它放回去,可以这么说。

一般的解决方案很简单,首先不要丢弃类型信息。

于 2012-09-20T03:39:43.500 回答
1

你的意思是这样吗?

#define SCAST(T,X) static_cast<T>(X); 

我应该警告您,通常过度使用这样的定义会使您的代码晦涩难懂且难以理解。

更重要的是,您必须注意宏,因为它们可能会导致难以找到错误,例如:

#define SQUARE(X) = X*X;

好吧,如果你用 调用它x++,预处理器将进行文字替换,你最终会得到(x++)*(x++);这意味着它完全不会是你正在寻找的答案,并且使事情变得更糟,因为替换发生在幕后你很难找到原因。

我建议您尽可能查看模板函数或仅使用内联辅助函数,它是安全的,并且可以避免我指出的问题。

于 2012-09-20T03:41:22.800 回答
1

static_cast其好处是 C++ 程序员无需查找您的#define语句或其他语句即可准确识别它是什么。我强烈建议您继续使用static_cast.

但是,我的假设是您的问题是所需的击键次数,因此最好的解决方案是使用支持宏的文本编辑器。这样,最终保存的代码确实使用标准static_cast<T>(x)语法,但您可能只需要键入诸如[sc]tabTtabxtab.

有关如何执行此操作的信息将在此类编辑器的文档中找到。我不是高度可定制的编辑器的忠实粉丝,所以细节超出了我的知识范围。

于 2012-09-20T05:42:12.503 回答