相关疑难解决方法(0)

是否可以将标签的地址存储在变量中并使用goto跳转到它?

我知道每个人都讨厌搞砸.在我的代码中,由于我考虑过并且很满意的原因,他们提供了一个有效的解决方案(即我不是在寻找"不要那样做"作为答案,我理解你的预订,并理解我为什么使用它们无论如何).

到目前为止,它们一直很棒,但我希望以这样的方式扩展功能,这要求我基本上能够存储指向标签的指针,然后再转到它们.

如果此代码有效,它将代表我需要的功能类型.但它不起作用,30分钟的谷歌搜索没有透露任何东西.有没有人有任何想法?

int main (void)
{
  int i=1;
  void* the_label_pointer;

  the_label:

  the_label_pointer = &the_label;

  if( i-- )
    goto *the_label_pointer;

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c label pointers goto memory-address

53
推荐指数
8
解决办法
3万
查看次数

Switch case语句如何实现或在内部工作?

我在某处读到该switch语句使用"二进制搜索"或一些排序技术来精确选择正确的情况,与else-if梯形图相比,这增加了它的性能.

如果我们按顺序给出案例,那么交换机的工作速度会更快吗?是这样吗?你能在这个问题上添加宝贵的建议吗?

我们在这里讨论了相同的问题并计划发布作为一个问题.

c c++ gcc if-statement switch-statement

23
推荐指数
2
解决办法
1万
查看次数

将固定大小内存边界上的本机代码与GCC/G ++/AS对齐?

我有一个C函数,它包含将实现字节码解释器的字节码的所有代码.

我想知道是否有办法在固定大小边界的内存中对齐已编译代码的段,以便我可以直接计算从字节码的值跳转到的地址?排序与数组的工作方式相同,但不是从计算的地址读取,而是跳到它.

我知道我必须把代码放在每个"字节码代码"段的末尾执行下一个跳转,并且我必须使边界大小至少与最大段的大小一样大.

如果这是可能的,我怎么告诉编译器/汇编器(gcc/g ++/as)以这种方式对齐?

c c++ gcc g++ memory-alignment

4
推荐指数
1
解决办法
1189
查看次数