View difference between Paste ID: YeKnzfJ9 and GCgJdJHP
SHOW: | | - or go back to the newest paste.
1-
#include "crt.bi"
1+
type x 
2
  x as long
3-
type Point
3+
4-
  as long x
4+
5-
  as long y
5+
6
'variable named "x", having "x" as type
7
'this is fine since despite having the same names they are not used in the same contexts
8-
function createPoint( x as long , y as long) as point
8+
dim shared as x x 
9-
    dim as point p
9+
dim shared as long y
10-
    p.x = x
10+
11-
    p.y = y
11+
sub MySub( x as long )    
12-
    return p
12+
  dim as integer y = 5
13-
end function
13+
  print "y=";y,".y=";.y  
14
  print "parm x=";x,"old x.x=";.x.x
15-
scope 'int main() {
15+
  .x.x = x
16-
    dim as Point myPoint = createPoint(3, 4)
16+
  print "parm x=";x,"new x.x=";.x.x
17-
    printf(!"Point coordinates: (%d, %d)\n", myPoint.x, myPoint.y)
17+
end sub
18-
    
18+
19-
    dim as point MyPointToo = type(3,4) 'initialize the struct
19+
scope 'main
20-
    with myPointToo 'can be used to simplify access to a struct
20+
  
21-
      printf(!"Point coordinates: (%d, %d)\n", .x, .y)
21+
  'setting global x heres...
22-
    end with    
22+
  y = 10
23-
    
23+
  x.x = 12
24-
    end 0'return 0
24+
25-
end scope '}
25+
  'declared a "x" as string which is fine since this is a different scope
26-
26+
  dim as string x = "hello world"
27
  
28
  'freebasic kinda screwed up in this case... because sizeof() should refer to type X as priority
29
  'and len(x) should refer to variable x.. as priority.... but they don't
30
  print "sizeof(x)=";sizeof(x) 'this will cause a warn due to ambiguity (and will show the size of the struct)
31
  print "len(x)=";len(x)       'this will cause a warn due to ambiguity (and will show the size of the struct)
32
  
33
  print sizeof(.x)  'this will NOT WARN and show the size of the struct
34
  print sizeof(..x) 'this will NOT WARN and show the size of the struct
35
  print sizeof(*@x) 'this will NOT WARN and show the size of the variable (12 since that's the size of the string descriptor)
36
  print len(*@x)    'this will NOT WARN and show the LENGTH of the string variable
37
  
38
  MySub(15)
39
  sleep
40
end scope