printf/puts等_("hello,world \n")参数的作用是什么?我经常在阅读GNU源代码时发现它.
找到硬件键盘或鼠标的事件设备节点有什么万无一失的方法?
我试过的是读/ proc/bus/input/devices并在设备名称中搜索'Keyboard'或'Mouse',但这并不总是有效,因为设备名称变化很大.
另一个选择是选择Handlers = kbd和Handlers = mouseX,但在笔记本电脑上,还有其他设备,如"电源按钮","视频总线",Handlers = kbd.
我想添加一个getAs[T](key)方法Map,它将返回值asInstanceOf[T],当值类型为时,我发现它很有用Any.这是我尝试使用特质.
trait MapT extends Map[Any, Any] {
def getAs[T](key: Any): T = super.apply(key).asInstanceOf[T]
}
val map = new Map[Any,Any] with MapT
Run Code Online (Sandbox Code Playgroud)
但是,编译器不会让我做这件事,因为+,-,iterator和get方法都没有定义,我真的不想定义.
我该怎么做呢?有更好的方法getAs[T]吗?
当我为gcc启用-O时,是什么导致输出"Hello"?它不应该仍然是段错(根据这个维基)?
% cat segv.c
#include <stdio.h>
int main()
{
char * s = "Hello";
s[0] = 'Y';
puts(s);
return 0;
}
% gcc segv.c && ./a.out
zsh: segmentation fault ./a.out
% gcc -O segv.c && ./a.out
Hello
Run Code Online (Sandbox Code Playgroud)