亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? standard.shar

?? c語言開發方面的經典問題,包括源代碼.c語言開發所要注意的問題,以及在嵌入式等各方面的應用
?? SHAR
?? 第 1 頁 / 共 5 頁
字號:
X * Function: RaiseExceptionX * Usage: RaiseException(&e, name, value);X * ---------------------------------------X * This function is called by the raise macro and does theX * work necessary to raise the exception.  See the exception.c fileX * for details.  Clients do not ordinarily call this directly.X */XXvoid RaiseException(exception *e, string name, void *value);XX/*X * Function: HandlerExistsX * Usage: if (HandlerExists(&e)) ...X * ---------------------------------X * Determines whether a handler exists for an exception inX * the dynamically enclosing scope.  Intended only for useX * by special clients, such as the Error package.X */XXbool HandlerExists(exception *e);XX/* Define the pseudo-functions for raise and try */XX#define raise(e) RaiseException(&e, #e, NULL)XX#define try \X      { \X          jmp_buf _tmpbuf; \X          context_block _ctx; \X          volatile int _es; \X          _es = ES_Initialize; \X          _ctx.nx = 0; \X          _ctx.link = exceptionStack; \X          exceptionStack = (context_block *) &_ctx; \X          if (setjmp(_tmpbuf) != 0) _es = ES_Exception; \X          memcpy((void *) _ctx.jmp, (void *) _tmpbuf, sizeof(jmp_buf)); \X          while (1) { \X              if (_es == ES_EvalBody)XX#define except(e) \X                  if (_es == ES_EvalBody) exceptionStack = _ctx.link; \X                  break; \X              } \X              if (_es == ES_Initialize) { \X                  if (_ctx.nx >= MaxExceptionsPerScope) \X                      exit(ETooManyExceptClauses); \X                  _ctx.array[_ctx.nx++] = &e; \X              } else if (_ctx.id == &e || &e == &ANY) { \X                  exceptionStack = _ctx.link;XX#define endtry \X              if (_es != ES_Initialize) break; \X              _es = ES_EvalBody; \X          } \X      }XX#define GetExceptionName() _ctx.nameX#define GetExceptionValue() _ctx.valueX#define GetCurrentException() _ctx.idXX#endifEND_OF_FILEif test 7974 -ne `wc -c <'cslib/exception.h'`; then    echo shar: \"'cslib/exception.h'\" unpacked with wrong size!fi# end of 'cslib/exception.h'fiif test -f 'cslib/gcalloc.h' -a "${1}" != "-c" ; then   echo shar: Will not clobber existing file \"'cslib/gcalloc.h'\"elseecho shar: Extracting \"'cslib/gcalloc.h'\" \(2269 characters\)sed "s/^X//" >'cslib/gcalloc.h' <<'END_OF_FILE'X/*X * File: gcalloc.hX * Version: 1.0X * Last modified on Wed Sep 21 16:21:37 1994 by erobertsX * -----------------------------------------------------X * This file is a stub version of the interface for aX * garbage-collecting allocator that will be part ofX * a future library release.  When the garbage-collectingX * allocator is in use, the memory returned by the GetBlockX * and FreeBlock functions in genlib.h can be traced andX * collected automatically when it is no longer accessible.X *X * The garbage-collecting allocator is not part of theX * current cslib distribution.  Even so, functions in theX * other libraries call the ProtectVariable and ProtectBlockX * functions, so that they will continue to work when theX * full library is released.  Those functions are implementedX * in genlib.c.X */XX#ifndef _gcalloc_hX#define _gcalloc_hXX/*X * Macro: ProtectVariableX * Usage: ProtectVariable(v);X * --------------------------X * This macro registers a global variable with the allocationX * system, so that the variable is traced when the garbageX * collector is used.  This operation needs is implementedX * in genlib.c so that code can be written to function correctlyX * whether or not the garbage-collecting allocator is loaded.X */XX#define ProtectVariable(v) ProtectBlock(&v, sizeof v)XX/*X * Function: ProtectBlockX * Usage: ProtectBlock(ptr, nbytes);X * ---------------------------------X * This function is not usually called by clients (who willX * ordinarily use ProtectVariable instead), but has theX * effect of protecting the block of memory beginning atX * ptr and extending for nbytes from the garbage collector.X */XXvoid ProtectBlock(void *ptr, size_t nbytes);XX/*X * Global linkage variable: _acbX * -----------------------------X * This variable is used to hold the allocation control blockX * that provides the linkage between this package and theX * dynamic allocator.  The reason for using the structureX * as a linkage is so that the garbage-collecting allocatorX * need not even be loaded if it is not explicitly called.X */XXtypedef struct {X    void *(*allocMethod)(size_t nbytes);X    void (*freeMethod)(void *ptr);X    void (*protectMethod)(void *ptr, size_t nbytes);X} *_GCControlBlock;XXextern _GCControlBlock _acb;XX#endifEND_OF_FILEif test 2269 -ne `wc -c <'cslib/gcalloc.h'`; then    echo shar: \"'cslib/gcalloc.h'\" unpacked with wrong size!fi# end of 'cslib/gcalloc.h'fiif test -f 'cslib/genlib.c' -a "${1}" != "-c" ; then   echo shar: Will not clobber existing file \"'cslib/genlib.c'\"elseecho shar: Extracting \"'cslib/genlib.c'\" \(3748 characters\)sed "s/^X//" >'cslib/genlib.c' <<'END_OF_FILE'X/*X * File: genlib.cX * Version: 1.0X * Last modified on Sun Jul 24 10:29:46 1994 by erobertsX * -----------------------------------------------------X * This file implements the general C library package.  See theX * interface description in genlib.h for details.X */XX#include <stdio.h>X#include <stddef.h>X#include <string.h>X#include <stdarg.h>XX#include "genlib.h"X#include "gcalloc.h"X#include "exception.h"XX/*X * Constants:X * ----------X * ErrorExitStatus -- Status value used in exit callX * MaxErrorMessage -- Longest error message allowedX */XX#define ErrorExitStatus 1X#define MaxErrorMessage 500XX/* Section 1 -- Define new "primitive" types */XX/*X * Constant: UNDEFINEDX * -------------------X * This entry defines the target of the UNDEFINED constant.X */XXchar undefined_object[] = "UNDEFINED";XX/* Section 2 -- Memory allocation */XX/*X * Implementation notes:X * ---------------------X * The code for the memory allocator is divided betweenX * genlib.c and gcalloc.c, and the division strategy may atX * first seem unnatural, since the function ProtectBlock isX * declared in gcalloc.h but defined here in genlib.c.  TheX * intention is to minimize the size of object filesX * produced by linkers that search a library for modulesX * that are actually referenced.  The libraries themselvesX * need to call ProtectBlock (usually through the macroX * ProtectVariable), but will not require the actual codeX * for the allocator unless InitGCAllocator is explicitlyX * called.X */XX/*X * Global variable: _acbX * ---------------------X * This variable is used to hold a method suite that makes itX * easy to substitute a garbage-collecting allocator for theX * ANSI allocator.X */XX_GCControlBlock _acb = NULL;XX/* Memory allocation implementation */XXvoid *GetBlock(size_t nbytes)X{X    void *result;XX    if (_acb == NULL) {X        result = malloc(nbytes);X    } else {X        result = _acb->allocMethod(nbytes);X    }X    if (result == NULL) Error("No memory available");X    return (result);X}XXvoid FreeBlock(void *ptr)X{X    if (_acb == NULL) {X        free(ptr);X    } else {X        _acb->freeMethod(ptr);X    }X}XXvoid ProtectBlock(void *ptr, size_t nbytes)X{X    if (_acb != NULL) _acb->protectMethod(ptr, nbytes);X}XX/* Section 3 -- Basic error handling */XX/*X * Implementation notes: ErrorX * ---------------------------X * Writing the Error function requires some care, since it isX * called in circumstances in which parts of the system may beX * broken.  In particular, it is not acceptable for Error toX * call GetBlock, since the error condition may be that theX * system is out of memory, in which case calling GetBlock wouldX * fail.  The error string should be allocated dynamically,X * so that this function can be used in reentrant code.X * Note that it is critical to exit if the length bound forX * an error message is exceeded, since this error almostX * certainly corrupts the stack.X */XXvoid Error(string msg, ...)X{X    va_list args;X    char errbuf[MaxErrorMessage + 1];X    string errmsg;X    int errlen;XX    va_start(args, msg);X    vsprintf(errbuf, msg, args);X    va_end(args);X    errlen = strlen(errbuf);X    if (errlen > MaxErrorMessage) {X        fprintf(stderr, "Error: Error Message too long\n");X        exit(ErrorExitStatus);X    }X    if (_acb == NULL) {X        errmsg = malloc(errlen + 1);X    } else {X        errmsg = _acb->allocMethod(errlen + 1);X    }X    if (errmsg == NULL) {X        errmsg = "No memory available";X    } else {X        strcpy(errmsg, errbuf);X    }X    if (HandlerExists(&ErrorException)) {X        RaiseException(&ErrorException, "ErrorException", errmsg);X    } else {X        fprintf(stderr, "Error: %s\n", errmsg);X        exit(ErrorExitStatus);X    }X}END_OF_FILEif test 3748 -ne `wc -c <'cslib/genlib.c'`; then    echo shar: \"'cslib/genlib.c'\" unpacked with wrong size!fi# end of 'cslib/genlib.c'fiif test -f 'cslib/genlib.h' -a "${1}" != "-c" ; then   echo shar: Will not clobber existing file \"'cslib/genlib.h'\"elseecho shar: Extracting \"'cslib/genlib.h'\" \(6232 characters\)sed "s/^X//" >'cslib/genlib.h' <<'END_OF_FILE'X/*X * File: genlib.hX * Version: 1.0X * Last modified on Sun Jul 24 10:32:49 1994 by erobertsX * -----------------------------------------------------X * This file contains several definitions that form theX * core of a general-purpose ANSI C library developed by EricX * Roberts.  The goal of this library is to provide a basicX * set of tools and conventions that increase the readabilityX * of C programs, particularly as they are used in a teachingX * environment.X *X * The basic definitions provided by genlib.h are:X *X *    1.  Declarations for several new "primitive" typesX *        (most importantly bool and string) that areX *        used throughout the other libraries andX *        applications as fundamental types.X *X *    2.  A new set of functions for memory allocation.X *X *    3.  A function for error handling.X *X *    4.  A repeat statement for loops with interior exits.X */XX#ifndef _genlib_hX#define _genlib_hXX#include <stdio.h>X#include <stdlib.h>X#include <stddef.h>XX/* Section 1 -- Define new "primitive" types */XX/*X * Type: boolX * ----------X * This type has two values, FALSE and TRUE, which are equal to 0X * and 1, respectively.  Most of the advantage of defining this typeX * comes from readability because it allows the programmer toX * provide documentation that a variable will take on only one ofX * these two values.  Designing a portable representation, however,X * is surprisingly hard, because many libraries and some compilersX * define these names.  The definitions are usually compatible butX * may still be flagged as errors.X */XX#ifdef THINK_CX   typedef int bool;X#elseX#  ifdef TRUEX#    ifndef boolX#      define bool intX#    endifX#  elseX#    ifdef boolX#      define FALSE 0X#      define TRUE 1X#    elseX       typedef enum {FALSE, TRUE} bool;X#    endifX#  endifX#endifXX/*X * Type: stringX * ------------X * The type string is identical to the type char *, which isX * traditionally used in C programs.  The main point of defining aX * new type is to improve program readability.   At the abstractionX * levels at which the type string is used, it is usually notX * important to take the string apart into its component characters.X * Declaring it as a string emphasizes this atomicity.X */XXtypedef char *string;XX/*X * Type: streamX * ------------X * Like string, the stream type is used to provide additionalX * readability and is defined to be equivalent to FILE *X * (which is particularly confusing because it violatesX * standard case conventions).  This type is not used inX * the text but is preserved in genlib.h, so it is possibleX * to teach all of CS1 without exposing any pointers.X */XXtypedef FILE *stream;XX/*X * Constant: UNDEFINEDX * -------------------X * Besides NULL, the only other constant of pointer type isX * UNDEFINED, which is used in certain packages as a specialX * sentinel to indicate an undefined pointer value.  In manyX * such contexts, NULL is a legitimate data value and isX * therefore inappropriate as a sentinel.X */XX#define UNDEFINED ((void *) undefined_object)XXextern char undefined_object[];XX/* Section 2 -- Memory allocation */XX/*X * General notes:X * --------------X * These functions provide a common interface for memoryX * allocation.  All functions in the library that allocateX * memory do so using GetBlock and FreeBlock.  Even thoughX * the ANSI standard defines malloc and free for the sameX * purpose, using GetBlock and FreeBlock provides greaterX * compatibility with non-ANSI implementations, automaticX * out-of-memory error detection, and the possibility ofX * substituting a garbage-collecting allocator.X */XX/*X * Function: GetBlockX * Usage: ptr = (type) GetBlock(nbytes);X * -------------------------------------X * GetBlock allocates a block of memory of the given size.  IfX * no memory is available, GetBlock generates an error.X */XXvoid *GetBlock(size_t nbytes);XX/*X * Function: FreeBlockX * Usage: FreeBlock(ptr);X * ----------------------X * FreeBlock frees the memory associated with ptr, which mustX * have been allocated using GetBlock, New, or NewArray.X */XXvoid FreeBlock(void *ptr);XX/*X * Macro: NewX * Usage: p = New(pointer-type);X * -----------------------------X * The New pseudofunction allocates enough space to hold an

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷av一区二区三区软件 | 亚洲一区电影777| 亚洲国产精品自拍| 成人黄色在线网站| 日韩一区二区在线免费观看| 亚洲视频网在线直播| 精品一区二区日韩| 欧美一区二区三区人| 亚洲欧美国产三级| 国产成人av电影| 亚洲精品在线三区| 蜜桃av一区二区| 欧美日韩一本到| 亚洲欧美日本韩国| 波多野结衣精品在线| 精品国产一区二区三区不卡| 日韩精品久久久久久| 在线观看亚洲精品视频| 国产精品高清亚洲| 成人av网站在线观看免费| 2023国产精华国产精品| 久久精品av麻豆的观看方式| 欧美人与禽zozo性伦| 亚洲国产精品一区二区尤物区| www.成人网.com| 亚洲欧洲另类国产综合| 成人污视频在线观看| 久久精品免费在线观看| 国产大陆精品国产| 亚洲乱码国产乱码精品精可以看| 国产一区二区三区四区五区美女| 精品国产一区二区三区忘忧草| 日韩电影在线一区二区| 在线不卡一区二区| 裸体歌舞表演一区二区| 精品理论电影在线| 国产麻豆欧美日韩一区| 欧美激情综合网| 欧美情侣在线播放| 天堂蜜桃91精品| 精品粉嫩超白一线天av| 国产麻豆精品95视频| 国产欧美在线观看一区| 成人一道本在线| 中文字幕一区二区三区av| 色94色欧美sute亚洲线路一久| 亚洲精品成a人| 51精品久久久久久久蜜臀| 韩国午夜理伦三级不卡影院| 久久久久国产免费免费 | 日韩视频123| 精品一区二区三区在线观看国产 | 欧美一区二区三区爱爱| 免费久久精品视频| 中文成人综合网| 91成人免费在线| 九九国产精品视频| 国产精品久久久久一区二区三区 | 91福利在线观看| 热久久国产精品| 久久久精品影视| 91亚洲精品久久久蜜桃网站| 亚洲狠狠爱一区二区三区| 欧美tickle裸体挠脚心vk| 成人一区二区三区视频 | 美腿丝袜亚洲一区| 国产丝袜美腿一区二区三区| 波多野结衣在线一区| 图片区小说区国产精品视频| 久久久噜噜噜久久人人看| 色综合天天做天天爱| 麻豆成人av在线| 亚洲欧美日韩久久| 久久这里只精品最新地址| 日本福利一区二区| 国产在线精品国自产拍免费| 一区二区三区成人在线视频| 亚洲精品一区二区三区影院 | 亚洲自拍偷拍网站| 久久久久久久久蜜桃| 在线视频你懂得一区二区三区| 国产精品自拍在线| 亚洲高清不卡在线观看| 国产日韩欧美电影| 欧美一区二区三区喷汁尤物| 色综合久久综合网97色综合| 国产主播一区二区三区| 亚洲国产成人av网| 国产精品萝li| 国产亚洲精品超碰| 日韩欧美一区二区视频| 欧美日韩一区二区三区在线 | 国产精品传媒入口麻豆| 日韩免费在线观看| 制服丝袜av成人在线看| 在线观看免费亚洲| 91视频精品在这里| 成人黄色免费短视频| 国产在线精品一区二区三区不卡 | 欧美一级高清片| 欧美日韩中文字幕一区| 91在线观看下载| www.日本不卡| 不卡av在线免费观看| 国产美女在线观看一区| 麻豆精品蜜桃视频网站| 亚洲国产另类精品专区| 亚洲线精品一区二区三区| 一区二区三区资源| 亚洲日本va午夜在线电影| 国产精品国产自产拍在线| 国产精品伦理在线| 中文字幕 久热精品 视频在线| 国产三级三级三级精品8ⅰ区| 精品日产卡一卡二卡麻豆| 日韩欧美一区二区视频| 日韩色视频在线观看| 精品国产三级a在线观看| 精品久久久久久最新网址| xf在线a精品一区二区视频网站| 欧美大片一区二区三区| 精品国产一区二区国模嫣然| 久久综合资源网| 中文字幕欧美三区| 亚洲欧美另类小说| 丝袜脚交一区二区| 免费一级片91| 国产精品综合久久| 99精品视频一区二区| 欧美综合视频在线观看| 欧美剧在线免费观看网站 | 美腿丝袜亚洲色图| 国产一区激情在线| www.在线欧美| 欧美日韩国产小视频在线观看| 在线不卡的av| 精品国产伦一区二区三区观看体验| 精品久久久久久久久久久久久久久久久 | 91日韩一区二区三区| 欧美亚洲精品一区| 亚洲精品一区二区三区99| 国产欧美视频一区二区三区| 欧美激情一区二区三区| 夜夜嗨av一区二区三区中文字幕 | 1000部国产精品成人观看| 亚洲最色的网站| 久久国产婷婷国产香蕉| 99这里只有久久精品视频| 欧美日韩精品三区| 国产欧美视频在线观看| 图片区小说区国产精品视频| 国产久卡久卡久卡久卡视频精品| 色综合久久88色综合天天| 欧美另类z0zxhd电影| 国产欧美中文在线| 日本v片在线高清不卡在线观看| 国产成人精品影视| 欧美高清视频一二三区| 国产三级精品视频| 婷婷国产v国产偷v亚洲高清| 粉嫩aⅴ一区二区三区四区| 欧美欧美午夜aⅴ在线观看| 日本一区二区三区四区| 日韩在线一区二区三区| 丁香激情综合国产| 欧美成人vr18sexvr| 玉米视频成人免费看| 国产.欧美.日韩| 日韩午夜激情视频| 亚洲国产成人av网| 91丨porny丨最新| 中文字幕精品一区二区三区精品| 偷窥少妇高潮呻吟av久久免费| 成人h动漫精品一区二| 精品久久久久久无| 天天色综合天天| 欧美视频中文字幕| 亚洲人亚洲人成电影网站色| 国产伦精品一区二区三区视频青涩| 欧美日韩国产片| 亚洲视频小说图片| 成人av电影在线网| 国产视频一区不卡| 激情伊人五月天久久综合| 日韩一区二区在线免费观看| 亚洲午夜一区二区| 欧美伊人久久久久久久久影院| 亚洲丝袜美腿综合| 99在线精品观看| 日韩理论片中文av| www.色精品| 日韩码欧中文字| 91免费精品国自产拍在线不卡| 国产视频在线观看一区二区三区| 国内精品免费在线观看| www亚洲一区| 国产乱子伦视频一区二区三区| 日韩女优av电影| 黄页网站大全一区二区| xfplay精品久久|