over13.c
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 125 行
C
125 行
#include "fail.h"
#ifdef __WATCOM_NAMESPACE__
// tests multiple symbol search results
struct S1 {
};
struct S2 {
};
namespace n1 {
void f( S1 * ) {
fail(__LINE__);
}
void f( int x ) {
if( x & 1 ) fail(__LINE__);
}
};
namespace n2 {
void f( S2 * ) {
fail(__LINE__);
}
void f( char x ) {
if(( x & 1 ) == 0 ) fail(__LINE__);
}
};
namespace n3 {
using namespace n1;
using namespace n2;
};
typedef void FI( int );
typedef void FC( char );
int i = 2;
char c = char( ' ' | 1 );
namespace test1 {
using namespace n1;
using namespace n2;
int b;
FI *a1[] = { f, &f, (f), (&f), (0,f), (0,&f) };
FC *a2[] = { f, &f, (f), (&f), (0,f), (0,&f) };
FI *v1( f );
FI *v2( &f );
FC *v3( f );
FC *v4( &f );
void ei( FI *p ) {
p( i += 2 );
}
void ec( FC *p ) {
p( c += 2 );
}
void test() {
a1[0]( i += 2 );
a1[1]( i += 2 );
a1[2]( i += 2 );
a1[3]( i += 2 );
a1[4]( i += 2 );
a1[5]( i += 2 );
a2[0]( c += 2 );
a2[1]( c += 2 );
a2[2]( c += 2 );
a2[3]( c += 2 );
a2[4]( c += 2 );
a2[5]( c += 2 );
v1( i += 2 );
v2( i += 2 );
v3( c += 2 );
v4( c += 2 );
ei( f );
ei( &f );
ec( f );
ec( &f );
}
};
namespace test2 {
int b;
FI *a1[] = { n3::f, &n3::f, (n3::f), (&n3::f), (0,n3::f), (0,&n3::f) };
FC *a2[] = { n3::f, &n3::f, (n3::f), (&n3::f), (0,n3::f), (0,&n3::f) };
FI *v1( n3::f );
FI *v2( &n3::f );
FC *v3( n3::f );
FC *v4( &n3::f );
void ei( FI *p ) {
p( i += 2 );
}
void ec( FC *p ) {
p( c += 2 );
}
void test() {
a1[0]( i += 2 );
a1[1]( i += 2 );
a1[2]( i += 2 );
a1[3]( i += 2 );
a1[4]( i += 2 );
a1[5]( i += 2 );
a2[0]( c += 2 );
a2[1]( c += 2 );
a2[2]( c += 2 );
a2[3]( c += 2 );
a2[4]( c += 2 );
a2[5]( c += 2 );
v1( i += 2 );
v2( i += 2 );
v3( c += 2 );
v4( c += 2 );
ei( n3::f );
ei( &n3::f );
ec( n3::f );
ec( &n3::f );
}
};
int main() {
test1::test();
test2::test();
_PASS;
}
#else
ALWAYS_PASS
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?