美文网首页
win_c/c++ mess01

win_c/c++ mess01

作者: Ewitter | 来源:发表于2020-01-04 19:20 被阅读0次

    1. win makefile

    1.1 win makefile,eg:
    # Nmake macros for building Windows 32-Bit apps
    !include <Win33.Mak>
    OUTDIR = START_BIN
    # ---------Build Rule-------
    all: $(OUTDIR) $(OUTDIR)\start.exe
    
    # if OUTDIR does not exist,then create 
    $(OUTDIR):
        if not exist "$(OUTDIR)/$(NULL)"  mkdir $(OUTDIR)
    
    # ----------compile----------
    $(OUTDIR)\start.obj: start.c
        cl -c -DCRTAPIl=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_X86_=1  -DWIN32 -D_WIN32 -W3
           -D_WINNT -D_WIN32_WINNT=0x0500 0D)WIN32)IE=0x0500 -DWINVER=0x0500    
           -D_MT -MTd /Gz /Fo"$(OUTDIR)\\"  /Fd"$(OUTDIR)\\"  start.c
    
    # ------------link-----------
    $(OUTDIR)\start.exe: $(OUTDIR)\start.obj
        link /INCREMENTAL:NO /NOLOGO -subsystem:windows,5.0 -out:$(OUTDIR)\start.exe 
        $(OUTDIR)\start.obj kernel33.lib ws2_33.lib mswsock.lib advapi33.lib bufferoverflowu.lib
    
    #-------------clean Rule------
    clean:
        if exist $(OUTDIR) rd /s /q $(OUTDIR)
    
    1.2 makefile explain:
    预处理 !include <Win33.Mak>
    注释      #
    宏(例子中的 OUTDIR)      宏定义直接使用“=”,“=”前为 宏名,其后为 宏值
    宏引用                 $(macro_name)
    
    nmake命令参数:
        NMAKE [option] [/f makefile] [/x stderrfile] [macrodefs] [targets]
        [targets]指 目标,默认是 makefile中的第一个目标;
        用/f 指定makefile的名字,默认是当前目录下文件名为makefile的文件。
    nmake时间戳 判断机制:
        生成一个目标时,若所有依赖项的最后修改时间早于目标的最后修改时间,则没必要再生成。
    
    特殊宏:
    S@                      当前目标的全名(全路径)
    SS@                     当前目标的全名(全路径),作为依赖项
    S*                      除去文件扩展名的当前目标的全名
    S**                     当前目标的所有依赖项
    S?                      时间戳晚于当前目标时间戳的所有依赖项
    S<                      时间戳晚于当前目标时间戳的所有依赖项,在推理规则的命令中有效
    MAKE                    调用NMAKE
    MAKEDIR                 调用NMAKE时的当前目录
    MAKEFLAGS               当前有效的选项(去掉/F),eg: /$(MAKEFLAGS)
    

    2. tool tips

    2.1 VS-tool:
    alt + ->                代码提示
    F5                      开始调试
    shift+ F5               结束调试
    F7                      build
    F9                      设置/取消breakpoint
    F10                     debug模式下 单步执行
    F11                     debug模式下 步入函数
    F12                     转到定义
    ctrl+ G                 转到行
    ctrl+ W                 选中单词
    ctrl+ T                 前后交换
    ctrl+ U                 转为小写
    ctrl+ shift + U         转为大写
    ctrl+ K 然后ctrl+ C       注释所在行
    ctrl+ K 然后ctrl+ F       整理代码格式
    ctrl+ F  /  ctrl+ N     查找/新建
    其他快捷键设置(工具-选项-环境-键盘)
    
    生成项目:(或将项目生成为一个 可执行文件或者动态链接库)
        生成解决方案:生成-生成解决方案,或 解决方案管理器 右键单击 解决方案名;
        生成单个项目菜单:生成-生成项目名称,或 解决方案管理器 右键单击 解决方案名;
    若生成出错,可查看错误列表:视图-其他窗口-错误列表。
    
    eg:
    在“C/C++”子选项下的“代码生成”选项页中,“运行时库”选项下,/MD( Release)选项或/MDd( Debug)选项。
    使用这两个选项编程,将会调用一些系统中原本并不存在的接口。要解决这个问题需将选项改为/MT。
    如果新建 C/C++项目时选择“常规” → “空项目”,在运行时库时使用的选项就是/MT(这也是
    cl.exe 的默认选项)。
    建议:在编写 Windows 本机(Native)应用程序时,建议建立工程时选择“空项
    目”,这样编译连接选项大多都是默认的
    
    2.2 WinDbg command(more info press F1)
    d:查看内存数据
    l:列出进程信息
    Im:查看已加载模块
    g:运行
    ld:加载符号文件
    r:查看寄存器
    bp、bu、bm: 下载断点,bp为执行断点,bu为未解析断点,bm为符号断点
    bl:列出断点
    bc:清除断点     
    
    2.3 vc6
    alt + F8         代码对齐
    

    3. unicode & prefix

    3.1 关于UNICODE
        _UNICODE defined                _UNICODE not defined    
            
    #define _tcslen wcslen              #define _tcslen strlen      
    typedef wchar_t  TCHAR              typedef  char TCHAR 
    #define __T(x)  L##x                #define  __T(x)  x  
    #define MessageBox MessageBoxW      #define MessageBox  MessageBoxA 
    
    #define _T(x) __T(x)
    #define _TEXT(x)  __T(x)
    eg: if macro parameter is ""Hello"", then L##x is  L""Hello"""
    
    3.2 前缀 含义
        Prefix                              Constant
    
        CS                                  Class style option
        CW                                  Create window option
        DT                                  Draw text option
        IDI                                 ID number for an icon
        IDC                                 ID number for a cursor
        MB                                  Message box option
        SND                                 Sound option
        WM                                  Window message
        WS                                  Window style
    
    3.3 Suggested variable name prefix
        prefix                              Data Type
    
        c                                   char/WCHAR/TCHAR
        by                                  BYTE(unsigned char)
        n                                   short
        i                                   int
        x/y                                 int used as x/y-coordinate
        cx/cy                               int used as x/y length;c stands for "count"
        b/f                                 BOOL(int); f stands for "flag"
        w                                   WORD(unsigned short)
        l                                   LONG(long)
        dw                                  DWORD(unsigned long)
        fn                                  function
        s                                   string
        sz                                  string terminated by 0 character
        h                                   handle
        p                                   point
    

    相关文章

      网友评论

          本文标题:win_c/c++ mess01

          本文链接:https://www.haomeiwen.com/subject/zyjfactx.html