ginger.c

来自「数字语音编码中的GSM编码C语言程序」· C语言 代码 · 共 55 行

C
55
字号
/* * Copyright 1996 by Jutta Degener and Carsten Bormann, Technische * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. *//*$Header*//* Generate code to pack a bit array from a name:#bits description */#include	<stdio.h>#include	"taste.h"#include	"proto.h"#include	<limits.h>/* This module is the opposite of sour.   Sweet was already taken, * that's why it's called ginger.  (Add one point if that reminds * you of Gary Larson.) */#define WORD_BITS	16	/* sizeof(uword) * CHAR_BIT on the 				 * target architecture---if this isn't 16,				 * you're in trouble with this library anyway.				 */#define CHAR_BITS	 8	/* CHAR_BIT on the target architecture---				 * if this isn't 8, you're in *deep* trouble.				 */void write_code P2((s_spex, n_spex), struct spex * s_spex, int n_spex){	struct spex	* sp = s_spex;	int		  n_in = 0;	printf("uword sr = 0;\n");	for (; n_spex > 0; n_spex--, sp++) {		while (n_in < sp->varsize) {			if (n_in) printf("sr |= (uword)*c++ << %d;\n", n_in);			else printf("sr = *c++;\n");			n_in += CHAR_BITS;		}		printf("%s = sr & %#x;  sr >>= %d;\n",			sp->var, ~(~0U << sp->varsize), sp->varsize);		n_in -= sp->varsize;	}	if (n_in > 0) {		fprintf(stderr, "%d bits left over\n", n_in);	}}

⌨️ 快捷键说明

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