_MSC_VER
定义编译器的版本,VC6就是1200
#if _MSC_VER > 1000的意思就是如果编译器版本高于1000(VC++5.0)
#pragma once
#pragma once当在别的实现文件里包涵这个.h文件是只编译一次,只包含一次!
#pragma push_macro("new")
取消先前对宏"new"的定义,恢复new的默认dingyi。
#pragma warning(push,3)
3 级警告设置入栈。可设置1-5级
#pragma message("????")
编译时输出消息 ????
#pragma warning(disable:4001)
忽略 4001 号警告..
这部分参考链接:
http://bbs.csdn.net/topics/90075051
__super
MFC中的这东西我没找到在哪里定义的,貌似表示自己的父类?
int CProtocolTreeWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (__super::OnCreate(lpCreateStruct) == -1)
return -1;
return 0;
}
_WIN32_WINNT 0x0500
某天我引用shlobj.h中函数SHGetFolderPath失败,排除lib问题,原来就是shlobj.h中有源码:
#if (_WIN32_IE >= 0x0500)
SHFOLDERAPI SHGetFolderPathA(HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, LPSTR pszPath);
SHFOLDERAPI SHGetFolderPathW(HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, LPWSTR pszPath);
而我的MFC在stdafx.h中定义为
#ifndef _WIN32_WINNT // Allow use of features specific to Windows NT 4 or later.
#define _WIN32_WINNT 0x0410
这样的例子很多。。。切记小心。。。
下面是一些C++标准宏定义。
_ _func_ _
字符串,表示当前执行代码所在的函数名称。
_ _FILE_ _
字符串,表示当前文件名。
_ _LINE_ _
字符串,表示当前代码所在该文件的行数。
_ _TIME_ _
字符串,表示当前文件被编译的时间。格式如“Jul 11 2012”
_ _DATE_ _
字符串,表示当前文件被编译的日期。格式如“20:50:03”
USES_CONVERSION 以及A2T,T2A
加上头文件atlconv.h后,妈妈再也不用担心我在char,wchar,tchar之间的转换了!
USES_CONVERSION;
Foo(A2T("i am char"));