gpt4 book ai didi

c - 构建部分重叠的案例陈述的更好方法

转载 作者:太空宇宙 更新时间:2023-11-04 01:25:26 24 4
gpt4 key购买 nike

假设案例 1 执行操作 A、B、C、D,案例 2 执行操作 E、B、C、D。有没有比下面的更好的方法来构造它?

switch (id)
{
case 1:
case 2:
if (id==1) A();
if (id==2) E();
B();
C();
D();
break;
//More cases below
}

或者

switch (id)
{
case 1:
A();
B();
C();
D();
break;
case 2:
E();
B();
C();
D();
break;
//More cases below
}

澄清一下:所以我想根据我拥有的对象类型分解要完成的操作。所有这些对象都不共享任何操作,除了这两个共享所有操作,除了一个对每个对象都是唯一的。

最佳答案

就个人而言,我可能会使用辅助函数,并希望编译器能够适本地内联。假设这三个共享操作形成一个有用的组合似乎是合理的,因为它被调用了不止一次。

void BCD(void) {
B();
C();
D();
}
// ...
switch (id) {
case 1: A(); BCD(); break;
case 2: E(); BCD(); break;
// ...
}

有些人(不是我)可能会说这是 goto 的合法使用,使用相同的参数但不相信编译器优化:

switch (id) {
case 1: A();
goto BCD;
case 2: E();
BCD: B();
C();
D();
break;
//...
}

作为历史奇观,合法但强烈反对使用不正确的嵌套条件来影响 goto。参见示例 live on ideone.

关于c - 构建部分重叠的案例陈述的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32188012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com