(root)/
gettext-0.22.4/
gettext-tools/
gnulib-tests/
test-noreturn.c
       1  /* Test of macros for declaring functions as non-returning.
       2     Copyright (C) 2017-2023 Free Software Foundation, Inc.
       3  
       4     This program is free software: you can redistribute it and/or modify
       5     it under the terms of the GNU General Public License as published by
       6     the Free Software Foundation, either version 3 of the License, or
       7     (at your option) any later version.
       8  
       9     This program is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      12     GNU General Public License for more details.
      13  
      14     You should have received a copy of the GNU General Public License
      15     along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
      16  
      17  /* Written by Bruno Haible <bruno@clisp.org>, 2017.  */
      18  
      19  #include <config.h>
      20  
      21  #include <noreturn.h>
      22  
      23  /* Test _GL_NORETURN_FUNC on function declarations.  */
      24  
      25  _GL_NORETURN_FUNC extern void func1 (void);
      26  extern _GL_NORETURN_FUNC void func2 (void);
      27  extern void _GL_NORETURN_FUNC func3 (void);
      28  
      29  /* Test _GL_NORETURN_FUNC on function definitions.  */
      30  
      31  _GL_NORETURN_FUNC void funcd (void)
      32  {
      33    for (;;)
      34      ;
      35  }
      36  
      37  /* Test _GL_NORETURN_FUNCPTR.  */
      38  
      39  _GL_NORETURN_FUNCPTR void (*func1_ptr) (void) = func1;
      40  _GL_NORETURN_FUNCPTR void (*func2_ptr) (void) = func2;
      41  _GL_NORETURN_FUNCPTR void (*func3_ptr) (void) = func3;
      42  _GL_NORETURN_FUNCPTR void (*funcd_ptr) (void) = funcd;
      43  
      44  /* These could also be defined in a separate compilation unit.  */
      45  
      46  void func1 (void)
      47  {
      48    for (;;)
      49      ;
      50  }
      51  
      52  void func2 (void)
      53  {
      54    for (;;)
      55      ;
      56  }
      57  
      58  void func3 (void)
      59  {
      60    for (;;)
      61      ;
      62  }
      63  
      64  
      65  int
      66  main ()
      67  {
      68    return 0;
      69  }