当前位置: 首页 > news >正文

命令行传参及调试——vscode平台

文章目录

  • 前言
  • 1.命令行参数
  • 2.参数传递形式
  • 3.举个例子
    • 3.1代码部分
    • 3.2编译
    • 3.3运行
      • 3.3.1快捷方式
      • 3.3.2命令行指令
  • 4.调试
  • 结语

前言

命令行参数是程序和外部交互的重要方式,无论是开发命令行工具还是需要动态配置的应用程序,都离不开对命令行参数的处理。本篇博客以C++语言为例,介绍如何命令使用命令行参数。

1.命令行参数

命令行参数是程序启动时通过终端(命令提示符)传递给程序的额外信息。在C++中常用的指令如:

g++ -o test.exe test.cpp

test.cpp源文件编译生成test.exe可执行文件,保存的位置信息就是-o参数对应的值,此处指的是和源文件同一目录下。
但目前大多数软件都提供一些快捷方式(run),直接生成.exe可执行文件来避免使用这种命令行编译。
本文并不是介绍这种编译使用的命令行参数,而是在执行可执行性程序中需要传递的参数信息。以windows系统为例:

./share.exe -o ./outputs

该行命令的意思就是在执行share.exe程序时,传递参数-o,值为./outputs,可能会有很多参数,这里只是举个例子。

2.参数传递形式

在C++中,根据是否能够传递参数信息,分成两中形式:

  • 无参数传递
int main(){//主体程序return 0;
}
  • 有参数传递
int main(int argc, char* argv[]){//主体程序return 0;
}

也可以写成如下形式:

int main(int argc, char** argv){//主体程序return 0;
}

其中argc代表传递参数的数量,argv数组代表传递的参数。

3.举个例子

下面编写一段简短的代码对上述的内容进行举例,以VScode代码编辑器为例。

3.1代码部分

代码主要是对传递的参数进行打印,具体如下:

#include<iostream>int main(int args,char*argv[]){std::cout<<"传递参数长度为:"<<args<<std::endl;for (int i = 0; i < args; ++i) {std::cout << "第"<<i<<"个参数为:"<<argv[i] << std::endl;}std::cout<<"程序执行完毕!"<<std::endl;return 0;
}

3.2编译

对上述代码进行编译生成可执行性文件,这里使用上述所讲的的快捷方式,如下图所示:
在这里插入图片描述
该编译过程中的相关参数在./vscode/task.json文件中,比如修改输出的文件可执行性文件信息,就可以修改task.json文件中args-o参数信息:
在这里插入图片描述
${fileDirname}代表当前工作目录,默认会生成对应的可执行性文件和源文件属于同一目录下,这里我加了一个bin文件夹,因此它会在bin文件夹下产生输出。如下图所示:
在这里插入图片描述
当然你也可以使用命令行进行编译,如下:

g++ -o share.exe test.cpp

生成如下:
在这里插入图片描述

3.3运行

运行同理也有两种方式,使用快捷方式和命令行。

3.3.1快捷方式

  • 方式一
    在这里插入图片描述
    该方式我目前并不知道该如何配置传递参数,好像只能传递默认的参数,而且该方式编译和task.json文件中的配置有关,但运行又和launch.json无关,不知道是我环境配置时有错误,还是其他原因,该处的快捷方式和方式二的不一样,因此我又写了一个方式二。
    方式一的运行结果如下:
    在这里插入图片描述
  • 方式二
    在这里插入图片描述
    使用快捷键Ctrl+F5直接运行,如果没设置断点信息,F5也是一样的效果,那么如何让传递参数呢?
    这需要你配置launch.json文件,过程如下:
    起初可能会是下面这样:
    在这里插入图片描述
    点击创建launch.json文件 ,或者
    在这里插入图片描述
    此时会创建一个launch.json文件,之后点击添加配置,选择gdb启动
    在这里插入图片描述
  • 修改program参数,指向生成的可执行文件
  • 修改miDebuggerPath参数,指向gdb.exe即可

如果想添加命令行参数,给args参数添加配置即可,例子如下:

"args": ["-o","./outputs"]

此时使用快捷键ctrl+F5运行程序即可,运行结果如下:
在这里插入图片描述
此时就可以看到,传递的命令行参数确实完成了。

3.3.2命令行指令

命令行指令就很简单,例子如下:

./bin/test.exe -o ./outputs -i ./inputs

运行结果如下:
在这里插入图片描述

4.调试

debug是必不可少的,因此需要调试,这也是launch.json文件配置的必要性,当然你也可以选择gdb命令行在终端进行调试,不过我也不太会那种方法,所以这里就不谈及了。
注意:这个调试不只是只能在本地进行调试,远程服务器也可以进行调试(当然需要在远程服务器端配置好环境)
在这里插入图片描述
可以在右侧监视一栏观察变量的值。

结语

本篇博客主要介绍在C++环境下,如何配置task.json和launch.json文件,如何传递命令行参数,并进行debug,希望能够对你有所帮助!

http://www.dtcms.com/a/556974.html

相关文章:

  • 【面试进阶】JavaScript 函数与对象进阶知识总结(重难点+记忆模板)
  • 《赋能AI解锁Coze智能体搭建核心技能(2)--- 智能体开发基础》
  • 自贡网站优化js网站开发视频教程
  • 驱动增长,而非浪费:8步整合SEO与PMax,解锁Google AI的隐藏流量
  • 【图像处理基石】如何在图像中实现光晕的星芒效果?
  • Node.js 解释环境变量的定义、作用及在Node.js中的重要性,区分开发、测试、生产环境配置需求。
  • Rust 快速入门:从零到上手的系统指南
  • 做家政网站网站公司做的网站有最字
  • kafka 延迟消费配置
  • Win32 API 简洁版
  • RocketMQ 是什么?它的架构是怎么样的?和 Kafka 又有什么区别?
  • 企业微信网站建设方案模板下载wordpress几种系统
  • Token Activation Map to Visually Explain Multimodal LLMs
  • RHCSA-15网络管理
  • cpp 02
  • 中国建设银行官网网站忻州市城乡建设管理局网站
  • 【机器学习深度学习】强化学习与监督学习SFT、RL、RLHF、PPO、DPO
  • CSS3 框大小:深入解析与优化技巧
  • 用web端实现抠图,以及大模型本地化部署遇到坑
  • 【推荐系统9】重排模型:基于贪心、个性化的重排
  • Pandas-之Series 数据结构详解
  • 关键词解释:多视图学习(Multi-view Learning)
  • 类与对象(上):面向过程到面向对象的跨越,类的定义、封装与 this 指针等核心概念深度剖析
  • 医院手机网站中国建设银行预约网站
  • MATLAB实现模糊PID控制
  • 长沙有实力seo优化公司昆明网站seo报价
  • RuoYi-Vue3项目定制修改全攻略
  • 用Python来学微积分24-洛必达法则
  • 银川建网站全国统一核酸检测价格
  • Android WebView 最佳实践:Fragment 版本 + Token 注入 + 离线包热更新