1、如果一段代码是需要针对C++编写的, 可以使用该宏进行条件编译。__cplusplus的值是为了表示C++的版本。__cplusplus的类型是”long int”
2、
include
define TO_LITERAL(text) TO_LITERAL_(text)
define TO_LITERAL_(text) #text
ifndef __cplusplus
/* this translation unit is being treated as a C one */
printf(“a C program\n”);
else
// this translation unit is being treated as a C++ one
printf(“a C++ program\n__cplusplus expands to \””
TO_LITERAL(__cplusplus) “\”\n”);
endif
(void)getchar();
return 0;
}
如果没有定义__cplusplus, 那么当前源代码被当作C源代码处理。
如果定义了__cplusplus,那么当前源代码被当中C++源代码处理, 并且输出__cplusplus宏被展开后的字符串。
3、不应该依赖__cplusplus宏的值。