一般你可能在某些工程的stdafx头(多见于VS2010版本后ATL)中发现:
#define STRICT
也许你会忽略这个值,这个是什么意思呢?
其实就是让编译器执行严格的类型检查。
比如Windows.h里面会有一些类型的define是相同的,比如HDC和HWND,比如有这样一个函数:
int ReleaseDC(HWND hWnd, HDC hdc);
也许你会错误的使用为ReleaseDC(hdc,hWnd),但是因为默认情况下,HDC和HWND是define到相同的类型,则这样的代码会被编译通过。
如果你启用define STRICT,则HDC和HWND会被定义到不同的类型,这样在遇到上面的类型传入错误的时候,编译器就会报错,让你避免这样的错误。
简单来说,就是对Windows类型define类型定义了强类型检查。
#define STRICT
也许你会忽略这个值,这个是什么意思呢?
其实就是让编译器执行严格的类型检查。
比如Windows.h里面会有一些类型的define是相同的,比如HDC和HWND,比如有这样一个函数:
int ReleaseDC(HWND hWnd, HDC hdc);
也许你会错误的使用为ReleaseDC(hdc,hWnd),但是因为默认情况下,HDC和HWND是define到相同的类型,则这样的代码会被编译通过。
如果你启用define STRICT,则HDC和HWND会被定义到不同的类型,这样在遇到上面的类型传入错误的时候,编译器就会报错,让你避免这样的错误。
简单来说,就是对Windows类型define类型定义了强类型检查。