码迷,mamicode.com
首页 > 其他好文 > 详细

代码中的软件工程

时间:2020-11-13 13:17:24      阅读:23      评论:0      收藏:0      [点我收藏+]

标签:return   begin   技术   span   构建版本号   handler   调用   fine   else   

一、编译和调试环境配置

  1、安装vscode中的C/C++扩展

    打开vscode,点击侧边栏的扩展(Ctrl+Shift+X),搜索c++,点击安装C/C++

    技术图片 

    C/C++扩展不包含C++编译器或调试器

 

 

  2、安装C++编译器和调试器 

    本机使用Windows系统,因此下载Mingw-w64(Windows中的GCC,http://mingw-w64.org)

    安装过程中有几个选项需要说明:

      Version制定版本号,从4.9.1-8.x.0,按需选择,没有特殊要求就用最新版吧;

      Architecture跟操作系统有关,64位系统选择x86_64,32位系统选择i686;

      Threads设置线程标准可选posix或win32;

      Exception设置异常处理系统,x86_64可选为seh和sjlj,i686为dwarf和sjlj;

      Build revision构建版本号,选择最大即可

    技术图片

 

 

    安装完成后,需要将安装目录下的bin目录加入环境变量

    添加环境变量后,打开CMD,执行gcc -v看看是否安装成功

    技术图片

 

 

   3、

    使用vscode打开一个C文件,点击侧边栏的运行(Ctrl+Shift+D),点击运行和调试,选择环境C++(GBD/LLDB)

    #注意文件夹路径不能有中文

    技术图片

    选择配置gcc.exe

    技术图片

 

 

     生成了.vscode文件夹,其中有launch.json和tasks.json文件

    技术图片

    tasks.json告诉vscode如何生成(编译)程序的文件,将调用gcc编译器基于源代码创建可执行文件

    launch.json用于调试器设置

    技术图片

 

二、软件工程方法

  一个菜单程序的生长

  初始代码lab2:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char cmd[128];
    while(1)
    {
        scanf("%s", cmd);
        if(strcmp(cmd, "help") == 0)
        {
            printf("This is help cmd!\n");
        }
        else if(strcmp(cmd, "quit") == 0)
        {
            exit(0);
        }
        else
        {
            printf("Wrong cmd!\n");
        }
    }
}

  1、模块化设计

    模块化(Modularity)是在软件系统设计时保持系统内各部分相对独立,以便每一个部分可以被独立地进行设计和开发

    lab3.1代码

#include <stdio.h>
#include <stdlib.h>

int Help();
int Quit();

#define CMD_MAX_LEN 128
#define DESC_LEN    1024
#define CMD_NUM     10

typedef struct DataNode
{
    char*   cmd;
    char*   desc;
    int     (*handler)();
    struct  DataNode *next;
} tDataNode;

static tDataNode head[] = 
{
    {"help", "this is help cmd!", Help,&head[1]},
    {"version", "menu program v1.0", NULL, &head[2]},
    {"quit", "Quit from menu", Quit, NULL}
};

int main()
{
    /* cmd line begins */
    while(1)
    {
        char cmd[CMD_MAX_LEN];
        printf("Input a cmd number > ");
        scanf("%s", cmd);
        tDataNode *p = head;
        while(p != NULL)
        {
            if(strcmp(p->cmd, cmd) == 0)
            {
                printf("%s - %s\n", p->cmd, p->desc);
                if(p->handler != NULL)
                {
                    p->handler();
                }
                break;
            }
            p = p->next;
        }
        if(p == NULL) 
        {
            printf("This is a wrong cmd!\n ");
        }
    }
}

int Help()
{
    printf("Menu List:\n");
    tDataNode *p = head;
    while(p != NULL)
    {
        printf("%s - %s\n", p->cmd, p->desc);
        p = p->next;
    }
    return 0; 
}

int Quit()
{
    exit(0);
}

 

    

  2、可重用接口

  3、线程安全

 

 

 

     

 

        

 

二、软件工程理解和分析

代码中的软件工程

标签:return   begin   技术   span   构建版本号   handler   调用   fine   else   

原文地址:https://www.cnblogs.com/LiXingxuan/p/13946255.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!