我想知道C和C++语言.
C++使用:
return static_cast
我怎样才能转换return static_cast
成C?
例如:
C printf()
C++ cout
kfsone.. 8
C样式转换只是在值前面加上括号中的类型.代替
static_cast(value)
你干脆做
(type)value
例如
static_cast(x)
变
(int)x
或者你可以做到
#ifdef __cplusplus #define STATIC_CAST(Type_, Value_) static_cast(Value_) #else #define STATIC_CAST(Type_, Value_) (Type_)(Value_) #endif
并对两种语言使用一次调用
STATIC_CAST(int, x) // C++ static_cast(x), C (int)(x)
对于简单的情况,C语言中围绕Value_的额外括号不是必需的,但是因为这是一个宏,如果你说
STATIC_CAST(int, 1.0 + 2.0)
你不希望它扩展到
(int)1.0 + 2.0
但希望它扩展到
(int)(1.0 + 2.0)
请注意,C++允许C形式的转换,但模板化的转换机制是C++工程师的首选.