添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

列出预定义的 ANSI C和C++ Microsoft实现宏。

编译器识别预定义的ANSI C宏,并且Microsoft C++实现提供几个更多。 这些宏不带参数,并且不能重定义。 下面列出的某些预定义的宏定义与多个值。 请参见下表。有关更多信息。

ANSI兼容的预定义宏

用于源文件的源文件或包含的标头时,扩展为从0开始并提高x 1的整数。 当您使用预编译标头时, __COUNTER__ 确保其状态。

下面的示例使用 __COUNTER__ 分配唯一标识符到同一类型的三个不同的对象。

首先,假定下面的类定义。 构造函数采用整数作为参数。

// initialize object with a read-only unique ID
exampleClass::exampleClass(int nID)
	m_nID = nID;
int exampleClass::GetID()
	return m_nID;
// Demonstration of __COUNTER__, assigns unique identifiers to
//  different objects of the same type
int main(int argc, char** argv)
	// __COUNTER__ is initially defined as 0
	exampleClass e1(__COUNTER__);
	// having been referenced, __COUNTER__ is now defined as 1
	exampleClass e2(__COUNTER__);
	// __COUNTER__ is now defined as 2
	exampleClass e3(__COUNTER__);
	printf("e1 ID: %i\n", e1.GetID());
	printf("e2 ID: %i\n", e2.GetID());
	printf("e3 ID: %i\n", e3.GetID());
	// Output
	// ------------------------------
	// e1 ID: 0
	// e2 ID: 1
	// e3 ID: 2
	return 0;
// Demonstrates functionality of __FUNCTION__, __FUNCDNAME__, and __FUNCSIG__ macros
void exampleFunction()
	printf("Function name: %s\n", __FUNCTION__);
	printf("Decorated function name: %s\n", __FUNCDNAME__);
	printf("Function signature: %s\n", __FUNCSIG__);
	// Sample Output
	// -------------------------------------------------
	// Function name: exampleFunction
	// Decorated function name: ?exampleFunction@@YAXXZ
	// Function signature: void __cdecl exampleFunction(void)

仅在函数中有效。定义封闭函数的签名为字符串。

如果您使用的是,/EP 或 /P 编译器选项,__FUNCSIG__ 不展开。

默认情况下在64位操作系统上,调用约定是 __cdecl。

有关示例,请参见 __FUNCDNAME__。

计算为编译器的主版本号和次版本号元素。专业数字为句点分隔的版本号的第一个元素,并且该次版本号是第二个元素。

例如,因此,如果Visual C++编译器的版本号为15.00.20706.01,_MSC_VER 宏计算结果为1500。

在 Visual Studio 2010中,_MSC_VER 定义为1600。