【发布时间】:2020-11-01 22:13:59
【问题描述】:
我写了一个简单的基于堆栈的虚拟机,你可以在https://github.com/radinParsaei/VM查看它的源代码
当我用 clang 编译它时它工作得很好,但是如果它在字节码中使用 GCC 编译,我已经像 pop() / pop() 这样编码它工作不规则并且它返回 stack[stack.size() - 2] / stack[stack.size() - 1] 我通过编写像 Value a = pop(); Value b = pop(); return a / b; 这样的代码来解决这个问题有人有更好的主意吗?
【问题讨论】:
-
您的问题可能源于order of evaluation 未指定
operator /。 -
@IlCapitano 我敢打赌你是对的,应该从你的评论中做出回答。
-
@IlCapitano 我在你的评论中找不到我的答案我已经达到了这个结果:g++ c.cpp ./a.out b() a() 5 clang++ c.cpp ./a。 out b() a() 5 cat c.cpp #include
int a() { std::cout
标签: c++ gcc g++ stack-based