文档章节

VS Code创建C项目

wuqingyi
 wuqingyi
发布于 2017/06/27 15:39
字数 799
阅读 381
收藏 0
点赞 0
评论 0

1、安装VS Code,现在好像默认带了C/C++插件。

2、创建项目:可以在 文件->打开文件夹 中创建项目文件夹;

3、编写程序:
-test
--main.c
--source.c
--source.h
--.vscode
----launch.json
----tasks.json

.vscode文件夹后续由VS Code自动创建;

main.c

#include <stdio.h>
#include "source.h"

int main(void)
{
    printf("add:%d\n", add(2, 5));
    printf("sub:%d\n", sub(5, 2));
    return 0;
}

source.h

extern int add(int a, int b);
extern int sub(int a, int b);

source.c

int add(int a, int b)
{
    return a + b;
}

int sub(int a, int b)
{
    return a - b;
}

4、创建Task:Task可以用来完成很多事,不仅仅是用来编译!!!

创建一个task非常的简单.可以Ctrl+Alt+p叫出来命令行 输入task


点击接着选择Others,

就可以生成一个默认的模板. tasks.json:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "0.1.0",
    "command": "echo",
    "isShellCommand": true,
    "args": ["Hello World"],
    "showOutput": "always"
}

如果程序只有一个C文件,那么,只要修改上面模板中的command和args对应的内容即可,将echo换成gcc,将Hello World换成想要添加的参数或者放空,按Ctrl + Shit + b执行任务,就能编译出程序。

如果程序有很多个执行文件,或者需要分别编译debug和release等不同版本,或者需要有不同任务分别完成不同的功能,比如我现在有main.c、source.c和source.h等文件需要编译,我还想编译出debug和release版本。这就需要tasks关键字了:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "0.1.0",
    "command": "g++",
    "isShellCommand": true,
    "suppressTaskName": true,
    "args": [
        "${workspaceRoot}/main.c",
        "${workspaceRoot}/source.c"
    ],
    "showOutput": "always",
    "tasks": [
        {
            "taskName": "debug",
            "args": [
                "-gstabs"
            ]
        },
        {
            "taskName": "release",
            "args": []
        }
    ]
}

(args中的参数"-gstabs"表示编译的时候添加调试所需要的信息,否则调试的时候会直接运行完整个程序,不会在断点处停下来)

这里需要注意的是"suppressTaskName":
         如果suppressTaskName 为 true, 命令为 command 'global args' 'task args'.
         反之suppressTaskName 为 false, 命令为 command 'global args' taskName 'task args'.
(global args和task args分别表示tasks外面的args关键字的内容和tasks中每个任务自己的args)。

Ctrl+Shit+b这个快捷键只认 taskName 为 "build" 的那个task和全局命令。如果想运行上面的task,需要按Ctrl +Alt+p叫出来命令行,输入task,选择 运行任务,再选择想运行的task。

此外,当有不同任务分别完成不同的功能。只要将全局的command和args移到各个task中,填写相应的命令和参数就可以了。

5、将task关联到launch.json

5.1 创建launch.json:在菜单 调试->启动调试,就会提示要创建launch.json,选中C++(GDB/LLDB)

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceRoot}/a.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceRoot}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

修改program和cwd关键字,program设置要运行/调试的程序,要与task编译出来程序的名称、路径一致。

5.2 关联

添加"preLaunchTask": "build"到Launch.json中.就可以用了. 意思就是运行/调试开始之前先执行一个Task.

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceRoot}/a.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceRoot}",
            "environment": [],
            "externalConsole": true,
            "preLaunchTask": "debug",
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

 

© 著作权归作者所有

共有 人打赏支持
wuqingyi
粉丝 0
博文 27
码字总数 19055
作品 0
厦门
程序员
使用VS Code开发调试ASP.NET Core 1.0

原文出处:LineZero 使用VS Code开发调试ASP.NET Core 1.0,微软在今天凌晨发布了.NET Core 1.0,ASP.NET Core 1.0 与 Entity Framewok 1.0。 之前跟大家讲解过VS Code开发调试.NET Core RC2...

LineZero ⋅ 2016/06/29 ⋅ 0

Microsoft 开源用于 VS Code 的 Java Debugger

Microsoft 开源用于 VS Code 的 Java Debugger 微软推出的免费的跨平台代码编辑器Visual Studio Code(称为VS Code) 为9月份发布的 Java Debugger 开源代码。VS Code 在推出时就支持原生的 ...

周其 ⋅ 2017/11/21 ⋅ 6

asp.net core开发环境准备

1.1 安装sdk和运行时 浏览器打开网址https://www.microsoft.com/net/download, 到.Net Core下载页面。 根据操作系统,下载对应的SDK进行安装。安装之后可以从命令行运行dotnet命令,查看是否...

zting科技 ⋅ 2017/01/11 ⋅ 0

如何避免在.NET代码中出现不恰当依赖?

【IT168 技术】在如何至始至终保持代码的可维护性方面我给.NET开发者团队的最好建议是:将应用程序中的每个命名空间都当作组件看待,同时确保组件之间不存在依赖环。 通过遵守这条简单的原则...

InfoQ ⋅ 2013/10/12 ⋅ 0

visual studio code调试.net core 2.0程序

最近在试.net 2.0 Preview时,在VS2017中相对麻烦,现说也怕把生产环境搞坏,于是就想在vs code下试试。 首在安装.net core 2.0的SDK和Runtime,这里下载 https://github.com/dotnet/core/blo...

桂素伟 ⋅ 2017/05/14 ⋅ 0

VS2005混合编译ARM汇编代码

在开发过程中,发现简单的在Storage Memory区域拷贝或粘贴文件不能达到硬件量测的要求,需要直接通过编写ARM汇编指令让CPU直接对Memory进行读写数据。 以前没有用VS2005编写过汇编代码,所以...

ryany ⋅ 2011/04/02 ⋅ 0

Source Code Control (源代码控制)

XCode XCode支持使用SVN管理代码。 配置XCode: 1. 在Xode的菜单中选择 SCM -> Configure Repositories,填写SVN服务器的信息。 2. 然后选SCM -> Repositories 你就可以Import, Check Out你想...

失足处男的倒霉孩子 ⋅ 2013/12/26 ⋅ 0

Asp.net mvc + Redis(准备工作)

今天准备更新这个项目的第二篇博客。有一点需要说明的是之前觉得用的是Asp.net的WebPage,经过查看微软的官方文档还有相关的博客,相比较而言使用起来需要安装一个自动工具WebMatrix可以很快...

有情怀的小猿 ⋅ 05/08 ⋅ 0

VSCode插件制作:HTML代码自动填充

Visual Studio Code不但跨平台,还有良好的扩展性。我们可以在Visual Studio Marketplace上找到各种各样的插件。这里分享下怎样制作一个简单的用于代码填充的插件。 自定义代码片段 键盘快捷...

yushulx ⋅ 2016/12/13 ⋅ 0

为基于Express的应用上手,准备 Git与VS Code

Git与VS Code上手准备 基于express应用的,我打算用开发工具VS Code,版本管理工具Git ,所以还得学。 下载安装 git for windows Git 项目根目录初始化本地仓库 git init //初始化仓库 git ad...

朝天放歌 ⋅ 2016/07/07 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

发送短信如何限制1小时内最多发送11条短信

发送短信如何限制1小时内最多发送11条短信 场景: 发送短信属于付费业务,有时为了防止短信攻击,需要限制发送短信的频率,例如在1个小时之内最多发送11条短信. 如何实现呢? 思路有两个 截至到当...

黄威 ⋅ 昨天 ⋅ 0

mysql5.7系列修改root默认密码

操作系统为centos7 64 1、修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1 这一行配置让 mysqld 启动时不对密码进行验证 2、重启 mysqld 服务:systemctl restart mysql...

sskill ⋅ 昨天 ⋅ 0

Intellij IDEA神器常用技巧六-Debug详解

在调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦。下面不要在意,这个快捷键具体是啥,因为,这个keymap是可以自己配置的...

Mkeeper ⋅ 昨天 ⋅ 0

zip压缩工具、tar打包、打包并压缩

zip 支持压缩目录 1.在/tmp/目录下创建目录(study_zip)及文件 root@yolks1 study_zip]# !treetree 11└── 2 └── 3 └── test_zip.txt2 directories, 1 file 2.yum...

蛋黄Yolks ⋅ 昨天 ⋅ 0

聊聊HystrixThreadPool

序 本文主要研究一下HystrixThreadPool HystrixThreadPool hystrix-core-1.5.12-sources.jar!/com/netflix/hystrix/HystrixThreadPool.java /** * ThreadPool used to executed {@link Hys......

go4it ⋅ 昨天 ⋅ 0

容器之上传镜像到Docker hub

Docker hub在国内可以访问,首先要创建一个账号,这个后面会用到,我是用126邮箱注册的。 1. docker login List-1 Username不能使用你注册的邮箱,要用使用注册时用的username;要输入密码 ...

汉斯-冯-拉特 ⋅ 昨天 ⋅ 0

SpringBoot简单使用ehcache

1,SpringBoot版本 2.0.3.RELEASE ①,pom.xml <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.3.RELE......

暗中观察 ⋅ 昨天 ⋅ 0

Spring源码解析(八)——实例创建(下)

前言 来到实例创建的最后一节,前面已经将一个实例通过不同方式(工厂方法、构造器注入、默认构造器)给创建出来了,下面我们要对创建出来的实例进行一些“加工”处理。 源码解读 回顾下之前...

MarvelCode ⋅ 昨天 ⋅ 0

nodejs __proto__跟prototype

前言 nodejs中完全没有class的这个概念,这点跟PHP,JAVA等面向对象的语言很不一样,没有class跟object的区分,那么nodejs是怎么样实现继承的呢? 对象 对象是由属性跟方法组成的一个东西,就...

Ai5tbb ⋅ 昨天 ⋅ 0

Ubuntu16.04 PHP7.0 不能用MYSQLi方式连接MySQL5.7数据库

Q: Ubuntu16.04 PHP7.0 不能用MYSQLi方式连接MySQL5.7数据库 A: 执行以下2条命令解决: apt-get install php-mysql service apache2 restart php -m 执行后会多以下4个模块: mysqli mysqlnd...

SamXIAO ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部