diag0085.cpp
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C++ 代码 · 共 63 行
CPP
63 行
// Encapsulation of CAST and non-CAST conversion of various forms
// of 'this' pointers to various forms of 'void *'
// The compiler says that none of these are legal
// I think the draft standard says that it should be as marked
// bad - means won't work without the cast, will work with the cast
// GRB
// My interpretation of the conversions is implemented w.r.t. conversions.
// See EXPRERRC.C in EXPRERR.TST.
// The philosophy, in general, is that CONST can be added at will but cannot
// be taken away. VOLATILE is ignored, except at code generation. We should
// try this with MicroSoft and Metaware compilers.
// JWW
#if 0 // control presence of explicit cast
#define CAST ( void * )
#define CASTC ( void const * )
#define CASTV ( void volatile * )
#define CASTCV ( void const volatile * )
#else
#define CAST
#define CASTC
#define CASTV
#define CASTCV
#endif
extern void hit ( void * );
extern void hitc ( void const * );
extern void hitv ( void volatile * );
extern void hitcv( void const volatile * );
struct A {
void foo ( void );
void fooc ( void ) const;
void foov ( void ) volatile;
void foocv( void ) const volatile;
};
void A::foo( void ) { // GRB BCC TCC GNU JWW MSC MET
hit ( this ); //
hit ( CAST this ); //
hitc ( CASTC this ); //
hitv ( CASTV this ); //
hitcv( CASTCV this ); //
}
void A::fooc( void ) const {
hit ( CAST this ); // bad bad bad bad bad bad bad
hitc ( this ); //
hitc ( CASTC this ); //
hitv ( CASTV this ); // bad bad bad bad bad bad bad
hitcv( CASTCV this ); //
}
void A::foov( void ) volatile {
hit ( CAST this ); // bad bad bad bad bad
hitc ( CASTC this ); // bad bad bad bad bad
hitv ( this ); //
hitv ( CASTV this ); //
hitcv( CASTCV this ); //
}
void A::foocv( void ) const volatile {
hit ( CAST this ); // bad bad bad bad bad bad bad
hitc ( CASTC this ); // bad bad bad bad bad
hitv ( CASTV this ); // bad bad bad bad bad bad bad
hitcv( this ); //
hitcv( CASTCV this ); //
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?