switch( choice ) { case A: stmt; do_stmt_related2A; break; case B: stmt; do_stmt_related2B; break; case C: something_different(); ... }
如何避免重复stmt代码?
但是有没有解决办法?
gcc扩展标签作为值看起来相当不错的情况.
switch( choice ) { do { case A: ptr = &&A_label; break; case B: ptr = &&B_label; } while(0); stmt; goto *ptr; case C: ...
有什么技巧可以在ANSI-C中做同样的事情吗?
编辑:当然我已经想到了功能/宏/内联.但还有什么?
这不是关于性能.只是为了教育目的;)
switch( choice ) { case A: do_stmt(); do_stmt_related2A; break; case B: do_stmt(); do_stmt_related2B; break; case C: something_different(); ...}
那个gcc的伎俩是真的很可怕.我宁愿在任何一天在这样的怪物上有可读的代码.
你应该总是认为继承你的代码的程序员是一个杀人的疯子谁知道你住的地方:-)
总结以上是内存溢出为你收集整理的避免重复代码全部内容,希望文章能够帮你解决避免重复代码所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)