Pascal for C++ users

From Free Pascal wiki
Jump to: navigation, search

Overview

This page gives some translations between C++ and Pascal concepts.

Translation

Note: Logical operators (AND/OR/XOR etc) are logical or boolean depending on the type of the arguments (boolean or integer). Since Pascal had a separate boolean type from the start, boolean operators on integers were not necessary, and are always logical.

C++ Pascal
  {     Begin    
  }     End  
  =     :=   Becomes  
  ==     =   Equal
  /     /   Float Division (Integer: div)  
  %     Mod   Modulo operation
  !     Not   Logical and boolean depending on arguments
  !=     <>   Not equal  
  &&     And  
  ||     Or  
  ^     Xor  
  >>     Shr   bit shift right  
  <<     Shl   bit shift left  
  ++     Inc  
  --     Dec  
  /*     { or (*   Comment start
  */     } or *)   Comment end
  //     //   End of line comment (only one line comment)  
  &     @   address operator
  if()     If Then  
  if() else     If Then Else  
  while     While Do  
  do while     Repeat Until Not   
  do while !     Repeat Until    
  for ++     For To Do  
  for --     For Downto Do    
  switch case break     Case Of End  
  switch case break default     Case Of Else End    


C++ type Pascal type Size (bits) Range
  char     Char     8-bit     ASCII
  signed char     Shortint   8-bit   -128 .. 127  
  unsigned char     Byte   8-bit   0 .. 255  
  char*     PChar   (32-bit)   Pointer to a null-terminated string  
  short int     SmallInt   16-bit   -32768 .. 32767  
  unsigned short int     Word   16-bit   0 .. 65535  
  int     Integer   (16-bit or) 32-bit     -2147483648..2147483647     Generic integer types  
  unsigned int     Cardinal   (16-bit or) 32-bit     0 .. 4294967295     Generic integer types  
  long int     LongInt   32-bit   -2147483648..2147483647    
  unsigned long int     LongWord   32-bit   0 .. 4294967295  
  float     Single   32-bit   1.5E-45 .. 3.4E+38  
  double     Double   64-bit   5.0E-324 .. 1.7E+308  


C++ type Pascal
  class { }     Class End    
  class: { }     Class( ) End    
  template <class T> class { }     Generic = Class<T> End    
  struct { }     Record End    
  struct { }     Object End     If you want methods
  union { }     Record Case Of End     Variant Record  


See also

  • [1] Short tutorial that describes the process of using C and C++ code in FreePascal, including writing of wrapper code
  • Pascal for C users
  • SWIG
Personal tools