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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mk386.c

?? C語言編譯器的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
    chkNULL( item, "Out of memory !" );

    if ( list->count == 0 )
        list->head = list->tail = item;
    else {
        (list->tail)->next = item;
        list->tail = item;
    }
    list->count++;
}


void ListIter( List *list, void (*iter)( Item *) ) {
    Item *p;

    chkNULL( list, "Pointer is NULL !" );

    if ( list->count && iter ) {
        for ( p = list->head; p; p = p->next )
            (*iter)(p);
    }
}


static char *need;
static int found = 0;


static void find( Item *item ) {
    if ( strcmp( item->data, need ) == 0 )
        found = 1;
}


int  ListFind( List *list, char *data ) {
    found = 0;
    need = data;
    ListIter( list, find );
    return found;
}


char findpath[ _MAX_PATH ];
char findname[ _MAX_PATH ];


void get_source( char *filename ) {
    _splitpath( filename, fdisk, fpath, fname, fext );

    if ( strchr( filename, '?' ) || strchr( filename, '*' ) ) {  /* Check for '*' and '?' */
        _makepath( findpath, fdisk, fpath, NULL, NULL );
        _makepath( findname, NULL, NULL, fname, fext );
        find_source( findpath, findname );
    }
    else
        get_one_source( filename );
}


#ifdef __TURBOC__


void find_source( char *fpath, char *fname ) {
    int fpath_len = strlen( fpath );
    struct ffblk fb;

    if ( !findfirst( strcat( fpath, fname), &fb, FA_ARCH) )
    do {
        fpath[ fpath_len ] = '\0';
        get_one_source( strcat( fpath, fb.ff_name) );
    } while (! findnext(&fb) );
}


#else


void find_source( char *fpath, char *fname ) {
    int fpath_len = strlen( fpath );
    struct find_t fb;

    if (!_dos_findfirst( strcat( fpath, fname), _A_NORMAL, &fb ) )
    do {
        fpath[ fpath_len ] = '\0';
        get_one_source( strcat( fpath, fb.name) );
    } while( ! _dos_findnext( &fb ) );
}


#endif


void get_one_source( char *srcfile ) {
    char file[ _MAX_PATH ];
    strupr( strncpy( file, srcfile, _MAX_PATH ) );
    FileAdd( &files, file );
}


void cleanup( void ) {   // for atexit()
    ListDelete( &files );
    ListDelete( &l_def );
    ListDelete( &l_inc );
    ListDelete( &l_cc386 );
}


#define Def(v) ( (v) ? 'D' : 'U' )

void make( char *maker ) {
    static char make_opt[ _MAX_PATH ];
//  static char *args[3];
    int err;

    sprintf( make_opt,
" -%cMAP -%cDEBUG -%cNODEFLIB -%cKEEP_SRC -%cKEEP_LST -%cLINK -%cASSEMBLE -%cCOMPILE",
        Def( _map_file), Def( _debug), Def( _nodef_lib),
        Def( _keep_gen ), Def( _dump_lst ),
        Def( _link), Def( _assemble ), Def( _compile ) );
    if ( _keep_rsp )
        strcat( make_opt, " -K" );
    if ( _build_all )
        strcat( make_opt, " -B" );
    printf( "%s%s\n", maker, make_opt );
    err = spawnlp( P_OVERLAY, maker, maker, make_opt, NULL );

    if ( err <  0 )
        error( ERR_RUNTIME, maker );
    else if ( err > 0 )
        error( err, maker );
}

char *name( void ) {
    if ( strlen( name_exe ) > 0 )
        return name_exe;
    _splitpath( files.head->data, fdisk, fpath, fname, fext );
    return fname;
}

char *libpath( char *lib ) {
    if ( strlen( path_lib ) == 0 )
        return lib;
    strcpy( _file, path_lib );
    strcat( _file, "\\" );
    return strcat( _file, lib );
}

#define L_( s ) fprintf( frsp, "\t%s", (s) )
#define L0( s ) fprintf( frsp, "%s", (s) )
#define L1( s ) fprintf( frsp, "%s\n", (s) )

static FILE *frsp;


static void compile_inc  ( Item *p ) { fprintf( frsp, "%s;", p->data );   }
static void compile_def  ( Item *p ) { fprintf( frsp, " /D%s", p->data ); }
static void compile_opt  ( Item *p ) { fprintf( frsp, " %s", p->data );   }

static void assemble_def( Item *p ) { fprintf( frsp, " /d%s", p->data ); }
static void assemble_inc( Item *p ) { fprintf( frsp, " /i%s", p->data ); }


static void get_obj( Item *p ) {
    _splitpath( p->data, fdisk, fpath, fname, fext );
    if ( strcmp( fext, ".OBJ" ) == 0 )
        fprintf( frsp, "%s \\\n", p->data );
    else if ( strcmp( fext, ".ASM" ) == 0 ) {
        fprintf( frsp, "$(PATH_OBJ)\\%s.OBJ \\\n", fname );
    }
    else if ( strcmp( fext, ".LIB" ) != 0 ) {
        fprintf( frsp, "$(PATH_OBJ)\\%s.OBJ \\\n", fname );
    }
}

static void get_asm( Item *p ) {
    _splitpath( p->data, fdisk, fpath, fname, fext );
    if ( strcmp( fext, ".OBJ" ) == 0 || strcmp( fext, ".LIB" ) == 0 )
        return;
    else if ( strcmp( fext, ".ASM" ) == 0 )
        fprintf( frsp, "%s \\\n", p->data );
    else
        fprintf( frsp, "%s.ASM \\\n", fname );
}

static void get_lib( Item *p ) {
    _splitpath( p->data, fdisk, fpath, fname, fext );
    if ( strcmp( fext, ".LIB" ) == 0 ) {
        fprintf( frsp, "%s \\\n", p->data );
    }
}

static void get_dep( Item *p ) {
    _splitpath( p->data, fdisk, fpath, fname, fext );
    if ( strcmp( fext, ".LIB" ) == 0 )
        return; // .LIB file
    else if ( strcmp( fext, ".OBJ" ) == 0 )
        return; // .OBJ file
    else if ( strcmp( fext, ".ASM" ) == 0 ) {   // .ASM file
        fprintf( frsp, "$(PATH_OBJ)\\%s.OBJ : %s\n", fname, p->data );
        fprintf( frsp, "  $(AS) %s,$(PATH_OBJ)\\%s.OBJ,$(PATH_OBJ)\\%s.LST,NUL\n",
            p->data, fname, fname );
        fprintf( frsp, "  $(DEL_LST) $(PATH_OBJ)\\%s.LST\n", fname );
    }
    else {  // .CPP file
        fprintf( frsp, "$(PATH_OBJ)\\%s.OBJ : %s.ASM\n", fname, fname );
        fprintf( frsp, "  $(AS) %s.ASM,$(PATH_OBJ)\\%s.OBJ,$(PATH_OBJ)\\%s.LST,NUL\n",
            fname, fname, fname );
        fprintf( frsp, "  $(DEL_LST) $(PATH_OBJ)\\%s.LST\n", fname );
        fprintf( frsp, "  $(DEL_SRC) %s.ASM\n", fname );
        fprintf( frsp, "%s.ASM : %s\n", fname, p->data );
        fprintf( frsp, "  $(CC) %s\n",  p->data );
    }
}


static void wout_obj( Item *p) {
    _splitpath( p->data, fdisk, fpath, fname, fext );
    if ( strcmp( fext, ".LIB" ) == 0 )
        return;
    else if ( strcmp( fext, ".OBJ" ) == 0 )
        fprintf( frsp, "file %s\n", p->data );
    else if ( strcmp( fext, ".ASM" ) == 0 )
        fprintf( frsp, "file $(PATH_OBJ)\\%s.OBJ\n", fname );
    else
        fprintf( frsp, "file $(PATH_OBJ)\\%s.OBJ\n", fname );
}

static void wout_lib( Item *p) {
    _splitpath( p->data, fdisk, fpath, fname, fext );
    if ( strcmp( fext, ".LIB" ) == 0 )
        fprintf( frsp, "library %s\n", p->data );
}

static void delete_obj( Item *p ) {
    _splitpath( p->data, fdisk, fpath, fname, fext );
    if ( strcmp( fext, ".LIB" ) == 0 || strcmp( fext, ".OBJ" ) == 0 )
        return;
    else
        fprintf( frsp, "  $(DEL_SRC) $(PATH_OBJ)\\%s.OBJ\n", fname );
}

void gen_makefile( void ) {
    int tlink = ( _output == 'p' || _output == 'l' );

    frsp = fopen( "MAKEFILE.", "wt" );
    if ( frsp == NULL )
        error( ERR_RUNTIME, "MAKEFILE." );

L1( "#" );
L1( "#  this MAKEFILE. generate MK386.EXE program"  );
L1( "#" );
L1( ".AUTODEPEND" );
L1( ".SWAP" );
L1( "# LINK     = # define LINK for COMPILE, ASSEMBLE & LINK" );
L1( "# ASSEMBLE = # define ASSEMBLE for COMPILE & ASSEMBLE" );
L1( "# COMPILE  = # define COMPILER for ONLY COMPILE" );
L1( "!ifndef LINK" );
L1( "!ifndef ASSEMBLE" );
L1( "!ifndef COMPILE" );
L1( "LINK       =" );
L1( "!endif" );
L1( "!endif" );
L1( "!endif" );
L1( "# DEBUG    = # define DEBUG for debug info and debug startup module" );
L1( "# MAP      = # define MAP for generate .MAP file" );
L1( "# NODEFLIB = # define NODEFLIB for NO link default .OBJ & .LIB" );
L1( "# KEEP_SRC = # define KEEP_SRC for save generate .ASM & .OBJ files" );
L1( "# KEEP_LST = # define KEEP_LST for save generate .LST files" );
L1( "" );
L1( "                                       ### name of .EXE file" );
L0( "NAME = " ); L1( name() );
L1( "                                       ### define tools" );
L1( "CC  = CC386.EXE" );
L1( "AS  = TASM.EXE" );
L1( "                                       ### define options for CC" );
L0( "CC_INC = " );
    if ( l_inc.count > 0 ) {
        L0( "/I" ); ListIter( &l_inc, compile_inc );
    }
L1( "" );
L0( "CC_DEF = " );
    ListIter( &l_def, compile_def );
L1( "" );
L0( "CC_OPT = " );
    fprintf( frsp, "%ci %ce %cA",
	( _dump_cpp ? '+' : '-' ), ( _dump_err ? '+' : '-' ), ( !_ansi ? '+' : '-' ) );
    ListIter( &l_cc386, compile_opt );
L1( "" );
L1( "!ifdef KEEP_LST" );
L1( "CC_OPT = $(CC_OPT) +l" );
L1( "!endif" );
L1( "" );
L1( "CC = $(CC) $(CC_OPT) $(CC_DEF) $(CC_INC)" );
L1( "                                       ### define options for AS" );
L0( "AS_INC = " );
    ListIter( &l_inc, assemble_inc );
L1( "" );
L0( "AS_DEF = " );
    ListIter( &l_def, assemble_def );
L1( "" );
L1( "!ifdef DEBUG");
L1( "AS_OPT = /t /m3 /ml /zi" );
L1( "!else" );
L1( "AS_OPT = /t /m3 /ml /zn" );
L1( "!endif");
L1( "!ifdef KEEP_LST" );
L1( "AS_OPT = $(AS_OPT) /la" );
L1( "!endif" );
L1( "" );
L1( "AS = $(AS) $(AS_OPT) $(AS_DEF) $(AS_INC)" );
L1( "                                       ### .LIB & output .OBJ path" );
L0( "PATH_LIB = " ); L1( path_lib );
L0( "PATH_OBJ = " );
    if ( strlen( path_obj ) > 0 )
        L1( path_obj );
    else
        L1( "." );
L1( "                                       ### default .OBJ & .LIB" );
L1( "!ifdef NODEFLIB");
L1( "DEFAULT_OBJS =" );
L1( "DEFAULT_LIBS =" );
L1( "WLINK_OBJS   =" );
L1( "WLINK_LIBS   =" );
L1( "!else" );
L1( "DEFAULT_LIBS = $(PATH_LIB)\\CLDOS.LIB" );
L1( "WLINK_LIBS   = library $(DEFAULT_LIBS)" );
L1( "!ifdef DEBUG" );
    if ( _output == 'l' )
        L1( "DEFAULT_OBJS = $(PATH_LIB)\\C0DOSLD.OBJ " );
    else if ( _output == 'p' )
        L1( "DEFAULT_OBJS = $(PATH_LIB)\\C0DOSD.OBJ " );
    else
        L1( "DEFAULT_OBJS = $(PATH_LIB)\\C0DOSWD.OBJ " );
L1( "!else" );
    if ( _output == 'l' )
        L1( "DEFAULT_OBJS = $(PATH_LIB)\\C0DOSL.OBJ " );
    else if ( _output == 'p' )
        L1( "DEFAULT_OBJS = $(PATH_LIB)\\C0DOS.OBJ " );
    else
        L1( "DEFAULT_OBJS = $(PATH_LIB)\\C0DOSW.OBJ " );
L1( "!endif" );
L1( "WLINK_OBJS   = file $(DEFAULT_OBJS)" );
L1( "!endif" );
L1( "                                       ### define macro for KEEP_SRC" );
L1( "!ifdef KEEP_SRC");
L1( "DEL_SRC = @rem" );
L1( "!else" );
L1( "DEL_SRC = -del" );
L1( "!endif");
L1( "                                       ### define macro for KEEP_LST" );
L1( "!ifdef KEEP_LST");
L1( "DEL_LST = @rem" );
L1( "!else" );
L1( "DEL_LST = -del" );
L1( "!endif");
L1( "                                       ### define macro for MAP" );
L1( "!ifdef MAP");
L1( "TLINK_OPT = /3/d/c/m/l/s" );
L1( "WLINK_OPT = option map" );
L1( "!else" );
L1( "TLINK_OPT = /3/d/c/x" );
L1( "WLINK_OPT = " );
L1( "!endif");
L1( "                                       ### define macro for DEBUG" );
L1( "!ifdef DEBUG");
L1( "TLINK_DBG = /v" );
L1( "WLINK_DBG = debug option symf" );
L1( "!else" );
L1( "TLINK_DBG = " );
L1( "WLINK_DBG = option quiet" );
L1( "!endif");
L1( "                                       ### .ASM files" );
    fprintf( frsp, "ASMS = \\\n" );
    ListIter( &files, get_asm );
L1( "                                       ### .OBJ files" );
	fprintf( frsp, "OBJS = $(DEFAULT_OBJS) \\\n" );
	ListIter( &files, get_obj );
L1( "                                       ### .LIB files" );
	fprintf( frsp, "LIBS = $(DEFAULT_LIBS) \\\n" );
	ListIter( &files, get_lib );
L1( "                                       ###  main make depend" );
L1( "!ifdef LINK" );
L1( "$(NAME).EXE : $(OBJS) $(LIBS) makefile." );
	if ( tlink )
	{
		L1( "  TLINK.EXE @&&|" );
		L1( "$(TLINK_OPT) $(TLINK_DBG) $(OBJS), $(NAME), $(NAME), $(LIBS)" );
	}
	else
	{
		L1( "  WLINK.EXE @&&|" );
		L1( "$(WLINK_OPT) $(WLINK_DBG)" );
		L1( "format os2 le" );
		L1( "option nod" );
		if ( _output == 'w' ) {
			L1( "option osname='CC386+PMODE/W'" );
			L1( "option stub=$(PATH_LIB)\\PMODEW.EXE" );
		}
		else {
			L1( "option osname='CC386+DOS/4GW'" );
			L1( "option stub=$(PATH_LIB)\\D4GWSTUB.EXE" );
        }
        L1( "name $(NAME)" );
        L1( "$(WLINK_OBJS)" );
        ListIter( &files, wout_obj );
        L1( "$(WLINK_LIBS)" );
        ListIter( &files, wout_lib );
    }
L1( "|" );
    ListIter( &files, delete_obj );
L1( "!else" );
L1( "!ifdef ASSEMBLE");
L1( "assemble : $(OBJS) " );
L1( "!else" );
L1( "!ifdef COMPILE");
L1( "compile : $(ASMS) " );
L1( "!endif" );
L1( "!endif" );
L1( "!endif" );
L1( "                                       ### files depend" );
    ListIter( &files, get_dep );
    fclose( frsp );
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品奇米国产一区二区三区| 欧美精品精品一区| 老司机一区二区| 国产精品久久久久四虎| 欧美一级免费观看| 色婷婷综合久久久久中文| 精品在线播放免费| 有坂深雪av一区二区精品| 亚洲精品一区二区三区香蕉| 欧美四级电影网| 懂色av一区二区三区免费观看| 日韩激情中文字幕| 亚洲最快最全在线视频| 亚洲国产成人私人影院tom| 欧美一区二区在线视频| 日本韩国精品一区二区在线观看| 国产成人精品网址| 黄色精品一二区| 免费高清成人在线| 亚洲成人777| 亚洲乱码国产乱码精品精98午夜| 久久精品一二三| 日韩精品在线网站| 欧美日韩三级一区二区| 91黄色免费版| 91蜜桃免费观看视频| 成人免费高清在线观看| 国产一区二区0| 寂寞少妇一区二区三区| 日本亚洲欧美天堂免费| 日韩精品免费专区| 亚洲123区在线观看| 亚洲网友自拍偷拍| 亚洲高清中文字幕| 亚洲va韩国va欧美va精品| 亚洲图片一区二区| 午夜欧美一区二区三区在线播放| 一区二区三区欧美亚洲| 一区二区三区在线视频观看58| 亚洲乱码中文字幕| 亚洲一区av在线| 亚洲成在人线在线播放| 亚洲国产成人高清精品| 午夜a成v人精品| 蜜臀av性久久久久蜜臀aⅴ流畅 | 亚洲精品一区二区三区蜜桃下载| 日韩免费观看高清完整版| 欧美xxxxx裸体时装秀| 久久亚洲一区二区三区四区| 精品国产91九色蝌蚪| 精品99999| 中文字幕欧美激情一区| 日韩理论在线观看| 亚洲国产日日夜夜| 欧美aaa在线| 六月丁香综合在线视频| 国产成人一级电影| www.成人在线| 色天天综合色天天久久| 欧美三级电影在线看| 日韩一级欧美一级| 国产日本一区二区| 亚洲欧洲中文日韩久久av乱码| 亚洲自拍偷拍图区| 麻豆久久久久久| 成人免费精品视频| 欧美日韩一区二区三区视频| 91精品国产91久久综合桃花| 精品粉嫩aⅴ一区二区三区四区| 国产午夜精品在线观看| 亚洲人一二三区| 日韩av电影天堂| 国产成人精品一区二区三区网站观看 | 日韩欧美高清dvd碟片| 久久久不卡网国产精品一区| 自拍偷拍亚洲欧美日韩| 日韩影院在线观看| 国产精品一区二区在线播放| 色噜噜久久综合| 欧美成人精品高清在线播放| 国产精品国产精品国产专区不片| 亚洲福利视频一区| 国产麻豆精品视频| 欧美亚一区二区| 26uuu亚洲婷婷狠狠天堂| 亚洲免费色视频| 久久97超碰色| 色噜噜久久综合| 国产无一区二区| 亚洲地区一二三色| 成人黄色大片在线观看| 69精品人人人人| 成人免费在线视频| 精品一二三四在线| 欧洲一区二区三区在线| 久久久亚洲精品一区二区三区| 亚洲一区二区精品3399| 国产成人综合网站| 在线播放国产精品二区一二区四区| 国产日韩三级在线| 日韩avvvv在线播放| 日本精品免费观看高清观看| 国产日韩欧美在线一区| 日韩高清在线观看| 色综合久久六月婷婷中文字幕| 欧美精品一区二区三区高清aⅴ| 亚洲一区二区免费视频| 99re视频精品| 欧美国产日韩一二三区| 麻豆精品视频在线观看| 欧美日韩国产片| 亚洲精品第1页| 成人av在线资源网| 久久久久久**毛片大全| 青娱乐精品视频在线| 在线精品视频小说1| 中文字幕在线观看不卡视频| 国产精品一区二区免费不卡| 精品国产免费视频| 奇米777欧美一区二区| 欧美精选一区二区| 亚洲国产成人91porn| 在线视频一区二区免费| 亚洲欧美一区二区久久| 东方欧美亚洲色图在线| 国产色爱av资源综合区| 国产高清视频一区| 久久久久久夜精品精品免费| 美女在线观看视频一区二区| 欧美挠脚心视频网站| 五月婷婷综合网| 欧美午夜不卡在线观看免费| 有坂深雪av一区二区精品| 91精品办公室少妇高潮对白| 亚洲日本在线看| 色嗨嗨av一区二区三区| 亚洲人成7777| 在线国产亚洲欧美| 亚洲国产综合色| 欧美裸体一区二区三区| 青娱乐精品视频| 精品国产91乱码一区二区三区| 久久66热re国产| 久久伊99综合婷婷久久伊| 国产激情91久久精品导航 | 国产色一区二区| 不卡av在线网| 中文字幕亚洲视频| 在线观看免费视频综合| 亚洲国产中文字幕| 91精品久久久久久久99蜜桃| 日本美女一区二区三区视频| 日韩精品一区二区三区在线播放 | 男人的天堂久久精品| 日韩欧美亚洲另类制服综合在线| 免费高清在线一区| 国产日韩欧美一区二区三区乱码| 99国产精品一区| 亚洲.国产.中文慕字在线| 精品区一区二区| 成人免费高清视频在线观看| 亚洲精品视频自拍| 日韩一区二区在线看| 国产69精品久久久久毛片| 亚洲精品亚洲人成人网| 91麻豆精品国产91久久久久久| 国产一区二区三区久久悠悠色av | 麻豆成人av在线| 中文字幕精品一区| 欧美在线视频不卡| 国内久久婷婷综合| 亚洲免费在线视频一区 二区| 欧美人伦禁忌dvd放荡欲情| 国内精品视频666| 中文字幕在线不卡| 欧美一级淫片007| av中文字幕在线不卡| 五月天视频一区| 欧美国产日韩a欧美在线观看| 色综合久久久久综合99| 美国十次综合导航| 亚洲人123区| 亚洲精品一区二区三区影院| 色婷婷激情久久| 韩国精品免费视频| 一区二区三区四区高清精品免费观看 | 日韩视频免费直播| eeuss鲁一区二区三区| 日韩精品国产精品| 日韩一区中文字幕| 精品国产乱码久久久久久久久 | 欧美一区二区视频观看视频| 99国产精品久久久| 国产一区二区三区久久久| 一区二区在线观看av| 久久精品亚洲精品国产欧美| 欧美日韩国产首页| 色综合天天综合网天天狠天天| 久久福利资源站| 亚洲1区2区3区4区|