> 技术文档 > 面试专栏

面试专栏


问题:define 与 const 的区别

特性    #define (宏)                                     const (常量)
本质    预处理器指令,进行文本替换              编译器处理的具有类型的常量
阶段    在编译前处理                                    在编译时处理
类型检查    无,容易导致错误                       有,安全可靠
作用域    无,从定义点开始到文件末尾(可用#undef取消)    有,遵循块作用域、命名空间作用域等
调试    难以调试,符号表中没有其名称            易于调试,符号表中有其名称和值
内存    不分配内存(字面量替换)                会分配内存(除非被编译器优化掉)
表达式求值    可能导致多次求值(如用在宏参数中)    只求值一次
适用场景    条件编译、防止头文件重复包含、特定平台代码    定义程序中使用的具体常量值

问题:一个全局变量i为0,现在有两个线程各自让i++一万次,最后i是多少

如何解决?(如何得到正确的20000?)

问题:进程间通信的方式