2012-09-20 34 views
0

在我的代码中,我一直在重写static_cast<int *>大约一百万次,是否有重新定义关键字的方法,以便每当我调用它时它都做同样的事情?创建“快捷方式”类似于宏的定义

例如

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

+0

当你说重写,你确定正则表达式不能帮助吗? – chris

+0

我建议不要这样做 - 随着时间的推移,这使得代码无法读取 - 相反,我建议Mavis Beacon,并学会更快地输入:-)(严重时我输入100wpm左右) –

+0

如果有任何安慰,你可以配置IDE, “sc”或任何你想要的,点击一个热键,并将其扩展到'static_cast <|>'。 – chris

回答

1

static_cast有一个好处,即C++程序员可以准确识别它是什么,而无需去找到#define或其他语句。我强烈建议您继续使用static_cast

但是,我的假设是您的问题是所需的按键次数,所以最好的解决方案是使用支持宏的文本编辑器。这样一来,该结束了保存代码的功能使用标准static_cast<T>(x)语法,但你可能只需要输入一些诸如[小号Ç]标签牛逼标签X标签

有关如何操作的信息将在此类编辑的文档中找到。我不是那些高度可定制编辑的忠实粉丝,所以具体内容超出了我的理解。

+0

谢谢,我想坚持这一点。 –

1

问计更简单的方式做一些危险的&hellip;

是的,有很多的方式来完成你要求什么,包括

  • C++模板,

  • 宏定义,

  • 编辑器的快捷方式,

  • 定制预处理,

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

但是,您所完成的所有工作都是为了让您的代码更加友好。

相反,试图找出你如何经常丢失类型信息,这样你就必须手工把它放回去,可以这么说。

一般的解决方案是,非常简单地,而不是首先扔掉类型信息。

+0

我看不出最后3种解决方案如何减少代码。另外:我可以有猴子吗? (她是否也修复错误?) –

1

您的意思是?

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

我应该警告你,虽然通常这样定义的过度使用会使你的代码变得模糊和难以理解。

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

#define SQUARE(X) = X*X; 

那么,如果你调用此方法x++,预处理器会做一个文字替换和你将会以(x++)*(x++);结束,这意味着它不会是您正在寻找的答案,并且让事情变得更糟,因为替换发生在幕后,您将很难找到原因。

我会建议你改为查看模板函数或者只是内联帮助函数,这样可以安全并避免我指出的问题。