https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89373

            Bug ID: 89373
           Summary: macro expansion not counting braces correctly
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mdblack98 at yahoo dot com
  Target Milestone: ---

include <stdio.h>

#define MYMACRO1(m) MYLIST;

#define MYMACRO(r,m) \
   MYMACRO##r(m) 


#define MYLIST {1,2,3,4,5}

// too many args -- does not allow for braces such as used for array
initialization
int ii[32] = MYMACRO(1,{1,2,3,4,5});

// too many args -- does not allow for braces such as used for array
initialization
int jj[32] = MYMACRO(1,MYLIST);

// this works
int kk[32] = MYLIST;

int
main()
{
  // all 3 of these should print 1,2,3,4,5
  for(int i=0;i<5;++i) printf("ii %d,%d\n",i,ii[i]);
  for(int i=0;i<5;++i) printf("jj %d,%d\n",i,jj[i]);
  for(int i=0;i<5;++i) printf("kk %d,%d\n",i,kk[i]);
  return 0;
}

Reply via email to