1, gcc -E -dM - </dev/null 可以查看所有编译器的内置宏
2, argv[]与environ两个变量所占的内存是连续的,并且是environ紧跟在argv[]后面。
3, *((char*)-1) = ‘x'; 读写空指针 0 未必报错,但在-1处读写肯定报错,100%
4, 在switch 的case 中,如果定义变量会报错: 标号只能是语句的一部分,而声明并非语句,解决办法是把case 后面的内容加大括号
5, __attribute__ ((noreturn)) 对于自己定义的函数,如果你不想让它有返回值,那么可以使用