mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 21:21:48 +03:00
72 lines
1.2 KiB
C
72 lines
1.2 KiB
C
// https://issues.dlang.org/show_bug.cgi?id=22428
|
|
|
|
int printf(const char *s, ...);
|
|
void exit(int);
|
|
|
|
void assert(int b, int line)
|
|
{
|
|
if (!b)
|
|
{
|
|
printf("failed test %d\n", line);
|
|
exit(1);
|
|
}
|
|
}
|
|
|
|
/*********************************************/
|
|
|
|
static void dummy() { } /* so staticFunc() is not at offset 0 */
|
|
|
|
static int staticFunc(int i) { return i * 2; }
|
|
|
|
void testStaticFunc()
|
|
{
|
|
int x = staticFunc(3);
|
|
printf("%d\n", x);
|
|
assert(x == 6, 20);
|
|
|
|
int (*fp)(int);
|
|
fp = &staticFunc;
|
|
x = (*fp)(5);
|
|
printf("%d\n", x);
|
|
assert(x == 10, 21);
|
|
}
|
|
|
|
/*********************************************/
|
|
|
|
static int staticVar;
|
|
static int staticVar1 = 1;
|
|
|
|
void statics()
|
|
{
|
|
assert(staticVar == 0, 0);
|
|
assert(staticVar1 == 1, 1);
|
|
static int staticVar = 2;
|
|
assert(staticVar == 2, 2);
|
|
{
|
|
static int staticVar2 = 3;
|
|
assert(staticVar2 == 3, 3);
|
|
}
|
|
{
|
|
static int staticVar2 = 4;
|
|
assert(staticVar2 == 4, 4);
|
|
}
|
|
}
|
|
|
|
static int* pstatic = &staticVar1;
|
|
|
|
void pointers()
|
|
{
|
|
int *p = &staticVar;
|
|
assert(*p == 0, 10);
|
|
p = &staticVar1;
|
|
assert(*p == 1, 11);
|
|
assert(*pstatic == 1, 12);
|
|
}
|
|
|
|
int main()
|
|
{
|
|
testStaticFunc();
|
|
statics();
|
|
pointers();
|
|
return 0;
|
|
}
|