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

📄 common.h

📁 二维码QR的编码实现。C语言实现。希望各位一起学习。一起做条码开发
💻 H
字号:
/* * common part of test units. */#ifndef __COMMON_H__#define __COMMON_H__#include <stdlib.h>#include "../qrencode.h"#include "../qrinput.h"#include "../bitstream.h"#define testStart(__arg__) (testStartReal(__FUNCTION__, __arg__))#define testEndExp(__arg__) (testEnd(!(__arg__)))static int tests = 0;static int failed = 0;static int assertionFailed = 0;static int assertionNum = 0;static const char *testName = NULL;static const char *testFunc = NULL;char levelChar[4] = {'L', 'M', 'Q', 'H'};const char *modeStr[5] = {"nm", "an", "8", "kj", "st"};void printQRinput(QRinput *input){	QRinput_List *list;	BitStream *b;	int i;	printf("QRinput info:\n");	printf(" version: %d\n", input->version);	printf(" level  : %c\n", levelChar[input->level]);	list = input->head;	i = 0;	while(list != NULL) {		i++;		list = list->next;	}	printf("  chunks: %d\n", i);	b = QRinput_mergeBitStream(input);	printf("  bitstream-size: %d\n", BitStream_size(b));	BitStream_free(b);	list = input->head;	i = 0;	while(list != NULL) {		printf("\t#%d: mode = %s, size = %d\n", i, modeStr[list->mode], list->size);		i++;		list = list->next;	}}void testStartReal(const char *func, const char *name){	tests++;	testName = name;	testFunc = func;	assertionFailed = 0;	assertionNum = 0;	printf("_____%d: %s: %s...\n", tests, func, name);}void testEnd(int result){	printf(".....%d: %s: %s, ", tests, testFunc, testName);	if(result) {		puts("FAILED.");		failed++;	} else {		puts("PASSED.");	}}#define assert_exp(__exp__, __msg__...) \(void)({assertionNum++;if(!(__exp__)) {assertionFailed++; printf(__msg__);}})#define assert_zero(__exp__, __msg__...) assert_exp((__exp__) == 0, __msg__)#define assert_nonzero(__exp__, __msg__...) assert_exp((__exp__) != 0, __msg__)#define assert_null(__ptr__, __msg__...) assert_exp((__ptr__) == NULL, __msg__)#define assert_nonnull(__ptr__, __msg__...) assert_exp((__ptr__) != NULL, __msg__)#define assert_equal(__e1__, __e2__, __msg__...) assert_exp((__e1__) == (__e2__), __msg__)#define assert_notequal(__e1__, __e2__, __msg__...) assert_exp((__e1__) != (__e2__), __msg__)void testFinish(void){	printf(".....%d: %s: %s, ", tests, testFunc, testName);	if(assertionFailed) {		printf("FAILED. (%d assertions failed.)\n", assertionFailed);		failed++;	} else {		printf("PASSED. (%d assertions passed.)\n", assertionNum);	}}void report(){	printf("Total %d tests, %d fails.\n", tests, failed);	if(failed) exit(-1);}char *sprintfBin(int size, unsigned char *data){	int i, j;	unsigned char mask;	int b, r;	char *str, *p;	str = (char *)malloc(size + 1);	p = str;	b = size / 8;	for(i=0; i<b; i++) {		mask = 0x80;		for(j=0; j<8; j++) {			if(data[i] & mask) {				*p = '1';			} else {				*p = '0';			}			p++;			mask = mask >> 1;		}	}	r = size - b * 8;	if(r) {		mask = 1 << (r - 1);		for(i=0; i<r; i++) {			if(data[b] & mask) {				*p = '1';			} else {				*p = '0';			}			p++;			mask = mask >> 1;		}	}	*p = '\0';	return str;}static char qrModeChar[4] = {'n', 'a', '8', 'k'};void printQrinput(QRinput *input){	QRinput_List *list;	list = input->head;	while(list != NULL) {		printf("%c(%d)\n", qrModeChar[list->mode], list->size);		list = list->next;	}}#endif /* __COMMON_H__ */

⌨️ 快捷键说明

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