⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 macsyntx.c

📁 this is a gcc file, you can download it and learn its usetility, for further detail please look at t
💻 C
字号:
/* Copyright (C) 2000 Free Software Foundation, Inc.  *//* { dg-do preprocess } *//* { dg-options "-pedantic -std=gnu99" } *//* Tests macro syntax, for both definition and invocation, including:-   o Full range of macro definition semantics.   o No. of arguments supplied to function-like macros.   o Odd GNU rest args behavior.   o Macro arguments do not flow into the rest of the file.  *//* Test basic macro definition syntax.  The macros are all called   "foo" deliberately to provoke an (excess) redefinition warning in   case the macros succeed in being entered in the macro hash table   despite being an error.   Split a couple of the lines to check that the errors appear on the   right line (i.e. are associated with the correct token).  */#define ;			/* { dg-error "identifier" } */#define SEMI;			/* { dg-warning "space" } */#define foo(X			/* { dg-error "missing" } */#define foo\(X,)				/* { dg-error "parameter name" } */#define foo(, X)		/* { dg-error "parameter name" } */#define foo(X, X)		/* { dg-error "duplicate" } */#define foo(X Y)		/* { dg-error "comma" } */#define foo(()			/* { dg-error "may not appear" } */#define foo(..., X)		/* { dg-error "missing" } */#define foo \__VA_ARGS__			/* { dg-warning "__VA_ARGS__" } */#define goo(__VA_ARGS__)	/* { dg-warning "__VA_ARGS__" } */#define hoo(...) __VA_ARGS__	/* OK.  */#define __VA_ARGS__		/* { dg-warning "__VA_ARGS__" } */__VA_ARGS__			/* { dg-warning "__VA_ARGS__" } *//* test # of supplied arguments.  */#define none()#define one(x)#define two(x, y)#define var0(...)#define var1(x, ...)none()				/* OK.  */none(ichi)			/* { dg-error "passed 1" } */one()				/* OK.  */one(ichi)			/* OK.  */one(ichi\, ni)				/* { dg-error "passed 2" } */two(ichi)			/* { dg-error "requires 2" } */var0()				/* OK.  */var0(ichi)			/* OK.  */var1()				/* { dg-warning "rest arguments to be used" } */var1(ichi)			/* { dg-warning "rest arguments to be used" } */var1(ichi, ni)			/* OK.  *//* This tests two oddities of GNU rest args - omitting a comma is OK,   and backtracking a token on pasting an empty rest args.  */#define rest(x, y...) x ## y	/* { dg-warning "ISO C" } */rest(ichi,)			/* OK.  */rest(ichi)			/* { dg-warning "rest arguments to be used" } */#if 23 != rest(2, 3)		/* OK, no warning.  */#error 23 != 23 !!#endif/* Test that we don't allow arguments to flow into the rest of the   file.  */#define half_invocation do_nowt(2#define do_nowt(x) xhalf_invocation )		/* OK.  */do_nowt (half_invocation))	/* { dg-error "unterminated argument" } */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -