| Title: | DEC C Problem Reporting Forum | 
| Notice: | Report DEC C++ problems in TURRIS::C_PLUS_PLUS | 
| Moderator: | CXXC::REPETE TCHEON | 
| Created: | Fri Nov 13 1992 | 
| Last Modified: | Fri Jun 06 1997 | 
| Last Successful Update: | Fri Jun 06 1997 | 
| Number of topics: | 1299 | 
| Total number of notes: | 6249 | 
    Problem with -xtaso and -vptr_size_short
    
      My sw partner is required to use -xtaso_short and -vptr_size_short
      due to ObjectStore .
      We can build with no problem the xx.so files .
      But we have problem to build the executable .
      We have some pointers problem convertions .
       example of message :
    cxx: Error: /home/wb/kl/Kernel7/prod/DMStd/src/DMStd_GlobalHandle.cxx
    line 408: In the initializer for domain,
    the referenced type of the pointer value "&ptr" is "short pointer to
    char", which is not compatible with "long pointer to char" .
      Standard_Integer domain = strtol(str,&ptr,10);
    
    the man page :
      long int strtol(
              const char *nptr,
              char **endptr,
              int base);
    
      Question do we have problems to translate   char **endptr in 32 bits
      mode ?
    
     We use DU V4.0.B and CXX V5.5 .
    
     
| T.R | Title | User | Personal Name | Date | Lines | 
|---|---|---|---|---|---|
| 1279.1 | --> c_plus_plus | ATYISA::SULOCHA | Wed Mar 19 1997 12:57 | 2 | |
|     I cross post to c_plus_plus
    
 | |||||
| 1279.2 | strtol wants a 64-bit pointer | CADSYS::GROSS | The bug stops here | Thu Mar 20 1997 09:14 | 12 | 
| > long int strtol( > const char *nptr, > char **endptr, > int base); I guess you are passing &ptr as the 2nd argument for strtol. "ptr" is 32 bits long but strtol will fetch 64 bits. That will include 32 bits that aren't even a part of "ptr". You need to move the pointer value into a real 64-bit pointer variable in order to call strtol. Dave | |||||
| 1279.3 | DECC::ZAHAREE | Linda D. Zaharee | Thu Mar 20 1997 09:24 | 15 | |
|     From the documentation:
    
         -xtaso_short
    
              Enables the use of short pointers.  All pointer types
              default to short pointers.  Long pointers can be
              declared though the use of the pointer_size pragmas.
              Because all system routines continue to use 64-bit  
    	      pointers, most applications require source changes
              when used in this way.
    
    You need to use a 64-bit pointers when calling strtol.  You can do 
    this through the use of #pragma pointer_size.
    
    Linda.
 | |||||