我最近遇到一个错误,在switch语句中初始化了一个变量.我开始玩这个更多,并意识到我不知道GCC在一些优化中试图做的第一件事.
int main(int argc, char** argv) {
switch (argc) {
case 1000: return 42;
int y = 24;
default: return y;
}
return argc;
}
Run Code Online (Sandbox Code Playgroud)
生成的代码总是返回42.发生了什么?为什么int y = 24
一切都搞砸了?
$ gcc -Wall -Werror -O2 -c test.c
$ objdump -drwCS -Mintel test.o
testo.o: file format elf64-x86-64
Disassembly of section .text.startup:
0000000000000000 <main>:
0: b8 2a 00 00 00 mov eax,0x2a
5: c3 ret
Run Code Online (Sandbox Code Playgroud) 这是场景:
你有两个图像,它们堆叠在一起.最高阶z索引图像负责处理点击事件(想想Google的Map API)并且是透明的,而下面的图像负责视觉表示.
这是一个伪HTML/CSS表示:
div.visual-container {
width: 10px;
height: 10px;
}
div.visual-container:hover {
background-color: #555;
}
div.click-container {
width: 10px;
height: 10px;
}
<div class='lowest'>
<div class='visual-container'></div>
</div>
<div class='highest'>
<div class='click-container'></div>
</div>
Run Code Online (Sandbox Code Playgroud)
现在,当单击"最高"元素时,也会在"最低"元素上调度该事件.
基本理念:
function onHoverEventForHighest() {
createMouseEvent(lowest_element, 'mouseover', event);
};
Run Code Online (Sandbox Code Playgroud)
这部分很好并相应地传递事件,但它似乎没有调用:hover CSS psuedo-class.
做这种性质的人有没有运气?