blob: 2f8a78479351dfebf6ecc1528b3c11a77718caf9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
// see also 4.2 variable declaration in ref manual
//http://www.freepascal.org/docs-html/ref/refse19.html
// The curterm6 case in the manual warrants a separate bug report
{$if defined(darwin) or defined(os2) or defined(emx) or defined(palmos) or defined(symbian) or defined(watcom) or defined(wdosx) or defined(win32) or defined(wince) or defined(go32v2)}
{$define underscoreprefix}
{$endif}
var
curterm1 : integer =1 ;
curterm2 : integer =2 ; cvar;
// these three are truly external -> no init is possible.
curterm3 : integer ; cvar; external;
{$ifdef underscoreprefix}
curterm4 : integer ; external name '_curterm4b';
{$ifdef unix}
{$ifdef darwin}
{Êon darwin, dll-vars always get the c-prefix, because otherwise
you run into trouble because e.g. global symbols cannot start
with 'L' (such symbols are always interpreted as local symbols
}
curterm5 : integer ; external 'libc' name 'curterm5b';
{$else darwin}
curterm5 : integer ; external 'libc' name '_curterm5b';
{$endif}
{$endif}
{$else underscoreprefix}
curterm4 : integer ; external name 'curterm4b';
{$ifdef unix}
{ on windows, this would actually search in libc.dll }
curterm5 : integer ; external 'libc' name 'curterm5b';
{$endif}
{$endif underscoreprefix}
curterm7 : integer =7 ; cvar; export;
curterm8 : integer =8 ; cvar; public;
{$ifdef underscoreprefix}
curterm9 : integer =9 ; export name '_me';
curterm10 : integer =10 ; public name '_ma';
{$else underscoreprefix}
curterm9 : integer =9 ; export name 'me';
curterm10 : integer =10 ; public name 'ma';
{$endif underscoreprefix}
curterm11 : integer =11 ;
// some declarations to make it compile in theory
{ the cvar modifier makes sure the c-prefix gets added if necessary }
curterm3b : integer = 3; cvar ; export name 'curterm3';
curterm4b :integer = 4; cvar; export;
{$ifdef unix}
curterm5b :integer = 5; cvar; export;
{$endif}
// we need a references too, so we print them.
begin
if (curterm1<>1) then
halt(1);
if (curterm2<>2) then
halt(2);
if (curterm3<>3) then
halt(3);
if (curterm4<>4) then
halt(4);
{$ifdef unix}
if (curterm5<>5) then
halt(5);
{$endif}
if (curterm7<>7) then
halt(7);
if (curterm8<>8) then
halt(8);
if (curterm9<>9) then
halt(9);
if (curterm10<>10) then
halt(10);
if (curterm11<>11) then
halt(11);
end.
|