home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.lang.c      Meh, in C you gotta define EVERYTHING      243,242 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 241,315 of 243,242   
   Thiago Adams to Thiago Adams   
   Re: do { quit; } else { }   
   15 Oct 25 16:04:10   
   
   From: thiago.adams@gmail.com   
      
   On 10/8/2025 9:59 AM, Thiago Adams wrote:   
   ...   
   > Alternatives:   
   >   
   > try {   
   >     throw; //error   
   >     quit;  //early success - exit without going to catch   
   > }   
   > catch {   
   > }   
   >   
   >   
   >   
      
   quit also can be emulated with macros:   
      
      
   #define try  if (1) {   
   #define catch quit_label:; } else catch_label:   
   #define throw goto catch_label   
   #define quit goto quit_label   
      
   int main(){   
      
        try   
        {   
            quit;     /* success exit*/   
            //throw;  /* catch */   
        }   
        catch   
        {   
           printf("catch\n");   
        }   
      
        printf("continuation...\n");   
   }   
      
      
   quit is useful for early success avoiding else { } else {}   
      
   try   
   {   
        if (case1)   
        {   
            ret = 1;   
            quit;   
        }   
      
        if (case2)   
        {   
            if (some_error)   
                throw;   
            ret = 2;   
            quit;   
        }   
      
        if (case3)   
        {   
            ret = 3;   
            quit;   
        }   
   }   
   catch   
   {   
       ret = -1;   
   }   
   return ret;   
      
   instead of   
      
   if (case1)   
   {   
        ret = 1;   
   }   
   else if (case2)   
   {   
        if (some_error)   
        {   
            ret = -1;   
            goto exit_label;   
        }   
        ret = 2;   
   }   
   else if (case3)   
   {   
      ret = 3;   
   }   
      
      
   exit_label:   
   return ret;   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca