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

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

?? cdecl1.c

?? Open Watcom 的 C 編譯器源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
/****************************************************************************
*
*                            Open Watcom Project
*
*    Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
*
*  ========================================================================
*
*    This file contains Original Code and/or Modifications of Original
*    Code as defined in and that are subject to the Sybase Open Watcom
*    Public License version 1.0 (the 'License'). You may not use this file
*    except in compliance with the License. BY USING THIS FILE YOU AGREE TO
*    ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
*    provided with the Original Code and Modifications, and is also
*    available at www.sybase.com/developer/opensource.
*
*    The Original Code and all software distributed under the License are
*    distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
*    EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
*    ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
*    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
*    NON-INFRINGEMENT. Please see the License for the specific language
*    governing rights and limitations under the License.
*
*  ========================================================================
*
* Description:  WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
*               DESCRIBE IT HERE!
*
****************************************************************************/


#include "cvars.h"
#include "toggle.h"
#include "pragdefn.h"
#include "cgswitch.h"


extern   TREEPTR         CurFuncNode;

TYPEPTR *MakeParmList( struct parm_list *, int, int );
local void ParmDeclList( void );
local void AddParms( void );
local void ChkParms( void );
local void FuncDefn( SYMPTR );

local void BeginFunc( void );
local void ReverseParms( void );       /* reverse order of parms */

void ParsePgm()
{
    auto SYM_HANDLE     dummysym;

    CompFlags.external_defn_found = 0;
    CompFlags.initializing_data   = 0;
    CompFlags.pcode_was_generated = 0;          /* 24-oct-91 */
    dummysym = 0;
    GlobalSym = 0;

    do
    {
        if( DeclList( &dummysym ) )
        {  /* if this is a function defn */
            FuncDefn( CurFunc );
            SrcLineNum = CurFunc->d.defn_line;  /* 17-aug-88 */
            SrcFno     = CurFunc->defn_file_index;
            GenFunctionNode( CurFuncHandle );

            CompFlags.in_pcode_func = 0;                /* 17-oct-91 */
            SymLevel = 1;
            ParmDeclList();
            SymLevel = 0;
            if( CurToken == T_LEFT_BRACE )
            {
                BeginFunc();
                Statement();
                CMemFree( CurFunc->name );
                CurFunc->name = NULL;
                SymReplace( CurFunc, CurFuncHandle );
                CurFunc = NULL;
                CurFuncNode = NULL;
                CurFuncHandle = 0;
            }
            else
            {
                MustRecog( T_LEFT_BRACE );
            }
        }
    } while( CurToken != T_EOF );

    if( CompFlags.external_defn_found == 0 )
    {
        if( ! CompFlags.extensions_enabled )
        {  /* 20-mar-90 */
            CErr1( ERR_NO_EXTERNAL_DEFNS_FOUND );
        }
    }
}


local void FuncDefn( SYMPTR sym )
{
    SYM_NAMEPTR sym_name;
    int         sym_len;
    TYPEPTR     typ;

    /* duplicate name in near space */
    sym_name = SymName( sym, CurFuncHandle );
    sym_len = far_strlen_plus1( sym_name );
    sym->name = CMemAlloc( sym_len );
    far_memcpy( sym->name, sym_name, sym_len );
    if( sym->flags & SYM_DEFINED )
    {
        CErr2p( ERR_SYM_ALREADY_DEFINED, sym->name );/* 03-aug-88 */
    }
    typ = sym->sym_type->object;                /* get return type */
    while( typ->decl_type == TYPE_TYPEDEF )
        typ = typ->object;

    if( typ->decl_type != TYPE_VOID )
    {         /* 26-mar-91 */
        if( TypeSize( typ ) == 0 )
        {
            CErr( ERR_INCOMPLETE_TYPE, sym_name );
        }
    }
    sym->flags |= /*SYM_REFERENCED | 18-jan-89 */ SYM_DEFINED;

    if( ! (GenSwitches & NO_OPTIMIZATION) )
    {
        sym->flags |= SYM_OK_TO_RECURSE;                /* 25-sep-91 */
    }

    if( sym->stg_class == SC_EXTERN  ||  sym->stg_class == SC_FORWARD )
    {
        sym->stg_class = SC_NULL;       /* indicate exported function */
    }

    CompFlags.external_defn_found = 1;
    if( Toggles & TOGGLE_CHECK_STACK )
        sym->flags |= SYM_CHECK_STACK;

    if( ! CompFlags.zu_switch_used )
    {
        if( (sym->attrib & FLAG_INTERRUPT) == FLAG_INTERRUPT )
        {
            /* interrupt function */
            TargetSwitches |= FLOATING_SS;      /* force -zu switch on */
        }
        else
        {
            TargetSwitches &= ~ FLOATING_SS;    /* turn it back off */
        }
    }
    if( strcmp( CurFunc->name, "main" ) == 0  || strcmp( CurFunc->name, "wmain" ) == 0)
    {
        sym->attrib &= ~FLAG_LANGUAGES;  //Turn off any language flags
    }
    SymReplace( sym, CurFuncHandle );
}

enum main_names
{
     MAIN_WMAIN,
     MAIN_MAIN,
     MAIN_WWINMAIN,
     MAIN_WINMAIN,
     MAIN_WLIBMAIN,
     MAIN_LIBMAIN,
     MAIN_WDLLMAIN,
     MAIN_DLLMAIN,
     MAIN_NUM,
};

static char const *MainNames[MAIN_NUM] =
{
    "wmain",          // MAIN_WMAIN,
    "main",           // MAIN_MAIN,
    "wWinMain",       // MAIN_WWINMAIN,
    "WinMain",        // MAIN_WINMAIN,
    "wLibMain",       // MAIN_WLIBMAIN,
    "LibMain",        // MAIN_LIBMAIN,
    "wDllMain",       // MAIN_WDLLMAIN,
    "DllMain",        // MAIN_DLLMAIN,
};

local void BeginFunc( void )
{
    char        *name;
    enum main_names main_entry;

    if( CurFunc->seginfo == NULL )
    {            /* 18-nov-92 */
        CurFunc->seginfo = DefCodeSegment;              /* 22-oct-92 */
        if( CurFunc->seginfo == NULL )
        {                /* 08-dec-92 */
            if( CompFlags.zm_switch_used )
            {
                name = "";                          /* 05-feb-93 */
                if( TargetSwitches & BIG_CODE )
                    name = CurFunc->name;
                CurFunc->seginfo = NewTextSeg( name, "_TEXT", "" );
            }
        }
    }
    name = CurFunc->name;
    for( main_entry = MAIN_WMAIN; main_entry < MAIN_NUM; ++main_entry )
    {
       if( strcmp( name, MainNames[main_entry] ) == 0 )
           break;
    }

    switch( main_entry )
    {
    case MAIN_WMAIN:
        CompFlags.has_wchar_entry =1;

    case MAIN_MAIN:
        if( CurFunc->u.func.parms )
        {           /* 07-dec-88 */
            CompFlags.main_has_parms = 1;
        }
        else
        {
            CompFlags.main_has_parms = 0;
        }
        CompFlags.has_main = 1;
    break;

    case MAIN_WWINMAIN:
        CompFlags.has_wchar_entry =1;

    case MAIN_WINMAIN:
        if( TargSys == TS_WINDOWS || TargSys == TS_CHEAP_WINDOWS
            || TargSys == TS_NT )
        {
            CompFlags.has_winmain = 1;
        }
        else
        {
            CompFlags.has_wchar_entry =0;
        }
    break;

    case MAIN_WLIBMAIN:
    case MAIN_WDLLMAIN:
        CompFlags.has_wchar_entry =1;

    case MAIN_LIBMAIN:
    case MAIN_DLLMAIN:
        CompFlags.has_libmain = 1;
    break;

    case MAIN_NUM:
    break;
    }
}

static void  ArgPromotion(  SYMPTR sym  )
{
    TYPEPTR     typ;
    TYPEPTR     arg_typ;

    AdjParmType( sym );
    arg_typ = sym->sym_type;
    /* perform default argument promotions */
    typ = arg_typ;
    while( typ->decl_type == TYPE_TYPEDEF )
        typ = typ->object;

    switch( typ->decl_type )
    {
#if 0
    case TYPE_CHAR:
    case TYPE_UCHAR:
    case TYPE_SHORT:
#endif
    case TYPE_ENUM:
        arg_typ = GetType( TYPE_INT );
    break;

#if 0
    case TYPE_USHORT:
        arg_typ = GetType( TYPE_UINT );
    break;

    case TYPE_FLOAT:
        arg_typ = GetType( TYPE_DOUBLE );
    break;
#endif
    default:
        break;
    }
}


local void ParmDeclList()       /* process old style function definitions */
{
    TYPEPTR             typ;
    PARMPTR             parm;
    decl_state          state;
    auto SYM_ENTRY      sym;
    decl_info           info;

    while( CurToken != T_LEFT_BRACE )
    {
        FullDeclSpecifier( &info );
        if( info.stg == SC_NULL  &&  info.typ == NULL )
        {
            if( CurToken == T_ID )
            {
                CErr2p( ERR_MISSING_DATA_TYPE, Buffer );
            }
        }
        if( info.stg != SC_NULL  &&  info.stg != SC_REGISTER )
        {
            CErr1( ERR_INVALID_STG_CLASS_FOR_PARM );
            info.stg = SC_NULL;
        }
        state = DECL_STATE_NONE;
        typ = info.typ;
        if( typ == NULL )
        {
            state |= DECL_STATE_NOTYPE;
            typ = TypeDefault();
        }
        if( info.stg == SC_NULL )
            info.stg = SC_AUTO;

        for( ;; )
        {
            if( CurToken == T_SEMI_COLON )

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费毛片片v| 捆绑变态av一区二区三区 | 五月婷婷久久丁香| 色噜噜狠狠色综合中国| 亚洲精品亚洲人成人网| 91国产福利在线| 婷婷激情综合网| 日韩色视频在线观看| 狠狠久久亚洲欧美| 国产日韩综合av| 91在线观看一区二区| 亚洲乱码中文字幕| 欧美日韩一区不卡| 免费高清在线视频一区·| 久久综合九色欧美综合狠狠| 丁香六月综合激情| 一区二区三区在线看| 欧美肥妇bbw| 蜜桃传媒麻豆第一区在线观看| 欧美成人r级一区二区三区| 国产成人aaa| 亚洲精品高清在线| 日韩精品一区二区三区中文精品| 精品系列免费在线观看| 中文字幕一区av| 欧美三级午夜理伦三级中视频| 捆绑调教一区二区三区| 国产精品美女久久久久久久久久久 | 欧美一区二区在线播放| 国产激情视频一区二区在线观看 | 久久久久久久网| 99精品国产视频| 日韩精品久久久久久| 国产亚洲污的网站| 色狠狠色狠狠综合| 紧缚奴在线一区二区三区| 亚洲欧洲美洲综合色网| 欧美一二三四在线| 成人v精品蜜桃久久一区| 天天亚洲美女在线视频| 国产精品私房写真福利视频| 欧美日韩一二区| 国产高清精品在线| 亚洲午夜久久久久久久久电影网| 26uuu欧美日本| 色偷偷一区二区三区| 久久国产成人午夜av影院| 亚洲欧美日韩精品久久久久| 欧美精品一区二区三区蜜桃| 欧美午夜精品久久久久久超碰 | av一区二区三区在线| 亚洲成人你懂的| 国产欧美精品区一区二区三区 | 福利一区在线观看| 久久精品久久久精品美女| 亚洲精品福利视频网站| 中文字幕精品三区| 精品少妇一区二区三区在线播放 | 7878成人国产在线观看| 色偷偷久久人人79超碰人人澡| 国产综合久久久久久鬼色| 亚洲成人在线免费| 亚洲欧美日韩中文字幕一区二区三区 | 美女视频黄久久| 亚洲国产视频直播| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 精品欧美一区二区久久| 欧美精品日韩精品| 欧美丝袜丝交足nylons图片| 成人免费毛片a| 国产黄色成人av| 国产在线精品不卡| 蜜臀av一区二区| 日韩成人免费看| 香蕉影视欧美成人| 亚洲免费成人av| 亚洲日本电影在线| 亚洲欧洲av另类| 亚洲欧洲99久久| 国产精品国产三级国产aⅴ原创 | 欧美国产日韩亚洲一区| 久久久久9999亚洲精品| 久久综合五月天婷婷伊人| 日韩欧美中文一区| 欧美一区二区视频在线观看2022 | 成人一区在线观看| 不卡一区二区在线| av高清不卡在线| 色综合一区二区三区| 色综合色狠狠综合色| 在线观看国产精品网站| 欧美亚一区二区| 欧美精品99久久久**| 91精品国产高清一区二区三区蜜臀 | 亚洲在线中文字幕| 亚洲国产一区二区三区| 偷拍日韩校园综合在线| 日韩国产欧美在线播放| 精品一区二区在线视频| 国产成人免费在线| 成人av电影观看| 色婷婷亚洲一区二区三区| 欧美性猛交一区二区三区精品| 欧美精品久久99| 精品久久国产老人久久综合| 蜜桃一区二区三区在线| 麻豆高清免费国产一区| 国产成人亚洲综合色影视| 成人国产精品免费| 91黄色小视频| 欧美一区二区三区视频在线| 久久毛片高清国产| 国产精品高潮久久久久无| 亚洲一区二区视频| 久久97超碰色| 99久久伊人网影院| 欧美日韩dvd在线观看| 欧美精品一区二区三区久久久 | 亚洲精品在线观| 中文字幕一区二区三区不卡| 亚洲电影中文字幕在线观看| 久久97超碰色| 色94色欧美sute亚洲线路一ni | 欧美日韩www| 久久精品视频在线免费观看| 亚洲人吸女人奶水| 麻豆一区二区99久久久久| 99re这里都是精品| 日韩欧美精品在线视频| 国产精品国产三级国产a| 手机精品视频在线观看| 成人听书哪个软件好| 欧美电影一区二区| 国产精品激情偷乱一区二区∴| 日本不卡在线视频| 色综合久久综合| 久久青草国产手机看片福利盒子| 一区二区三区中文字幕| 国产精品一二二区| 欧美日韩国产精品成人| 国产精品国产精品国产专区不片| 日韩专区中文字幕一区二区| 成人91在线观看| 精品国内二区三区| 日韩精品免费视频人成| 色天天综合久久久久综合片| 久久老女人爱爱| 日本sm残虐另类| 欧美综合天天夜夜久久| 国产精品网曝门| 国精产品一区一区三区mba桃花| 欧美日韩国产一级| 亚洲男人的天堂在线观看| 国产丶欧美丶日本不卡视频| 欧美大片一区二区三区| 污片在线观看一区二区| 日本精品裸体写真集在线观看| 久久久亚洲欧洲日产国码αv| 日韩不卡在线观看日韩不卡视频| 色美美综合视频| 国产精品精品国产色婷婷| 国产激情偷乱视频一区二区三区| 日韩精品一区二区三区老鸭窝| 亚洲国产aⅴ天堂久久| 91免费精品国自产拍在线不卡| 日本一二三四高清不卡| 国产精品一二三| 久久se精品一区二区| 在线不卡一区二区| 亚洲成人一二三| 欧美人妇做爰xxxⅹ性高电影 | 日韩欧美成人一区| 天天综合日日夜夜精品| 欧美日韩亚洲丝袜制服| 一个色在线综合| 在线观看一区日韩| 一区二区三区免费| 欧美日韩一区二区三区四区五区 | 精品夜夜嗨av一区二区三区| 日韩精品一区二区三区swag| 久久精品国产成人一区二区三区| 欧美电影免费观看高清完整版 | 欧美亚洲一区二区在线| 亚洲午夜一区二区三区| 91麻豆精品国产自产在线| 免费人成在线不卡| 亚洲精品一区二区三区香蕉| 国产精品主播直播| 中文字幕一区二区三区乱码在线 | 午夜a成v人精品| 欧美一区二区三区人| 精品一区二区三区在线观看 | 欧美一级搡bbbb搡bbbb| 蜜桃视频在线观看一区| 亚洲最色的网站| 91精品国产色综合久久ai换脸 | 婷婷丁香激情综合| 日韩精品中文字幕一区二区三区| 国产精品自拍av| 亚洲六月丁香色婷婷综合久久 |