【发布时间】:2016-08-21 18:14:13
【问题描述】:
我有两个函数,它们仅在一个参数(不同的结构)上有所不同,它们几乎执行相同的处理,导致大量重复代码。请参见以下简化示例:
struct foo {
int a;
};
struct bar {
int a;
int b;
};
foo(struct foo *f) {
do_b();
// error handling
f->a = 1;
do_c();
// error handling
do_d();
// error handling
}
bar(struct bar *b); {
do_a();
// error handling
b->b = 2;
do_b();
// error handling
b->a = 1;
do_c();
// error handling
do_d();
// error handling
}
是否有一些聪明的方法可以只使用一个函数来消除代码重复?
【问题讨论】:
-
你愿意把
struct B改成struct B { struct A a; int b; };吗? -
真正聪明的方法需要你完全理解strict aliasing rule。不幸的是,没有人理解这条规则(example、example、example)。所以你有点卡住了。
标签: c optimization