整理下微软编译器整的宏(未完成)


_MSC_VER

定义编译器的版本,VC6就是1200  
  #if   _MSC_VER   >   1000的意思就是如果编译器版本高于1000(VC++5.0)

 

#pragma   once

#pragma   once当在别的实现文件里包涵这个.h文件是只编译一次,只包含一次!

 

__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"));



你可能感兴趣的:(windows,mfc,features,微软,编译器)