#ifndef #define #endif跟直接在工程属性的与处理器定义中增加相应的定义不一样?前者不能达到想要的效果,为什么呢?该怎么解决

#ifndef #define #endif跟直接在工程属性的与处理器定义中增加相应的定义不一样?前者不能达到想要的效果,

#ifndef #define #endif跟直接在工程属性的与处理器定义中增加相应的定义不一样?前者不能达到想要的效果,为什么呢?
#ifndef M_WIDE_CHAR
#define M_WIDE_CHAR
#endif

这样好像无效

但在工程属性的预处理器定义增加M_WIDE_CHAR,去掉上面这段代码,就可以达到预期的效果

这两个有什么区别吗?

[解决办法]
可能有些文件没include到这段代码,则M_WIDE_CHAR在该文件中就没定义

预处理器定义增加M_WIDE_CHAR是全局的,所有文件都能看到这个宏