args.h

来自「Audacity是一款用於錄音和編輯聲音的、免費的開放源碼軟體。它可以執行於Ma」· C头文件 代码 · 共 66 行

H
66
字号
/* * Argument processing macros * I got tired of rethinking this everytime, * and 4xbsd doesn't have getopt() * * The following is an example of the use of this stuff *#include "args.h"#include <stdio.h>main(argc, argv)char **argv;{    char *a = "a", *b = "b", *c = "c";    int x = 0, y = 0, z = 0;    ARGLOOP        STRINGARG(a)	a = p;		ENDSTRINGARG        STRINGARG(b)	b = p;		ENDSTRINGARG        STRINGARG(c)	c = p;		ENDSTRINGARG        FLAGARG(x)	x++;		ENDFLAGARG        FLAGARG(y)	y++;		ENDFLAGARG        FLAGARG(z)	z++;		ENDFLAGARG        BADARG            fprintf(stderr, "unknown option %c\n", *p);            fprintf(stderr, "Usage: usage\n");            exit(1);        ENDBADARG    ENDARGLOOP    Here, the remaining args are argv[0] to argv[argc - 1]     printf("a=%s b=%s c=%s x=%d y=%d z=%d\nargs:", a, b, c, x, y, z);    { int i; for(i = 0; i < argc; i++)        printf(" %s", argv[i]);    }    printf("\n");} * */#define	ARGLOOP						\    while(--argc > 0 && **++argv == '-') {		\        register char *p;				\        for(p = *argv + 1; *p != '\0'; p++) {	\        switch(*p) {				\#define ENDARGLOOP					\        }					\        }						\nextarg:;						\    }						\#define FLAGARG(c)	case c:#define ENDFLAGARG	break;#define STRINGARG(c)	case c: if(!*++p) p = *++argv, argc--;#define ENDSTRINGARG	goto nextarg;#define	BADARG		default:#define ENDBADARG	break;

⌨️ 快捷键说明

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