www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1997/07/31/21:49:32

From: "Alexander van Vlerken" <h DOT vlerken AT pi DOT net>
Newsgroups: comp.os.msdos.djgpp
Subject: Help !! Function pointer problem in GPC
Date: 31 Jul 1997 12:37:39 GMT
Organization: World Access/Planet Internet
Message-ID: <01bc9daf$2522b340$13d9dc91@default>
NNTP-Posting-Host: 145.220.217.19
Lines: 47
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

Hi,
I am experiencing the following problem in gpc, I'm not able to
assign and use function pointers. At first I thought I was
doing something wrong, but I can't even get gpc to compile the
following example which was taken from the gpc docs (file GPC.I7 in the
info directory, the example starts at line 993).
Here's the example:

program zap(output);
     
     type
         proc_ptr = ^ procedure (integer);
     
     var
         pvar : proc_ptr;
     
     procedure write_int(i: integer);
     begin
       writeln ('Integer: ',i:1);
     end;
     
     begin
       (* PVAR points to function WRITE_IT *)
       pvar := &write_int;    {This is line 16, where GPC is complaining
about}                 
                                                                      
       (* Dereferencing a function pointer calls the function *)      
       pvar^(12345);                                                  
                                                                      
     end.                                                           
                                                                      
And when I want to compile this piece of code, gpc returns            
the following errormessages:                                          
                                                                      
Error: too few arguments to function Write_int (in line 16)
Error: invalid lvalue in unary '&'  (in line 16)
Error: Assigning a restricted type object is not allowed (in line 16)

I also tried "pvar := @write_int" (the turbopascal way), but I still get
the same errormessages. Does anyone know what I am doing wrong, or perhaps
another way to retrieve the address of a function/procedure ?
I am using gpc in a djgpp environment in a dos box under Win95.

Greetz, Alex van Vlerken (h DOT vlerken AT pi DOT net)



- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019