系统版本 和 编译器版本 的作用?该怎么解决

系统版本 和 编译器版本 的作用??
为什么要用 WINVER 和 _MSC_VER 来说明系统和编译器的版本呢,难道系统不知道它自己是什么版本的吗,编译器的版本 系统都不晓得吗?? 用这些宏说明版本到低有什么用,这些版本是说给你听的?????? 
 

------解决方案--------------------
比如richedit,是跟系统有关的,而richedit相关的一些结构体,则是跟开发环境有关的,所以有不同的宏。

------解决方案--------------------
有些API是系统OS带的,你的系统版本不够就可能调用不了
------解决方案--------------------
这个都是系统定义好的,高版本兼容低版本,,

低版本就不能使用高版本。。