C++中LONG与long的区别及VS中颜色差异含义咨询
Visual Studio中
LONG与long的区别、劣势及颜色含义 一、颜色差异的含义
- 蓝色的
long是C/C++原生关键字,属于语言内置的基础数据类型,VS的语法高亮会把这类原生语言关键字标为蓝色。 - 绿色的
LONG是Windows SDK定义的预类型宏,本质是通过typedef定义出来的别名,VS里会把这类平台专属的预定义类型、宏标为绿色(比如DWORD、HANDLE这类Windows常用类型也会是这个颜色)。
二、二者的本质区别
long是C/C++标准规定的原生数据类型,它的大小依赖于编译器和运行平台:在32位、64位Windows下都是4字节,但在部分64位Linux平台上可能是8字节。LONG是Windows平台专属的类型,在<windows.h>里定义为typedef long LONG;,所以在Windows环境下它和long的内存大小完全一致,但它属于Windows SDK的一部分,脱离Windows开发场景就无法识别。
三、只用其中一种的劣势
只使用long代替LONG
- 在Windows API开发场景中,很多函数的参数、返回值明确要求
LONG类型,虽然二者底层一致,但用long会模糊代码的平台语义——其他Windows开发者看到LONG就知道是符合SDK规范的类型,long则没有这个明确指向性,可读性会打折扣。 - 极端情况,如果未来Windows SDK调整
LONG的定义(概率极低),直接用long的代码无法自动适配这种变更。
只使用LONG代替long
LONG是Windows专属,用它写的代码无法跨平台编译,要是你的代码需要同时支持Windows和Linux、macOS等平台,非Windows环境下会直接因为找不到LONG的定义而编译失败。- 在纯标准C/C++项目(不依赖Windows SDK)里用
LONG,不符合通用编码规范,显得不专业。
四、总结
一句话概括:long是跨平台的标准基础类型,LONG是Windows平台的规范别名;颜色差异只是VS语法高亮用来区分「原生语言关键字」和「平台预定义类型」的标识,方便开发者快速识别类型的来源和适用场景。
内容的提问来源于stack exchange,提问作者Usukhbayar Bayaraa
相关产品推荐
相关产品推荐

