• VS使用Developer Command Prompt 命令行编译和执行C++代码


    .cpp文件需要先编译为.exe可执行文件,才能运行。

    这里介绍如何使用命令行来执行cpp文件,因为在一些情况下我们不能直接使用VS软件来运行调试,比如main函数中有参数,这时必须使用命令行来执行。

    1、Developer Command Prompt介绍

    可以使用Visual Studio自带的的 Developer Command Prompt(开发者人员命令提示符)来写命令行,在安装VS时会自带 Developer Command Prompt,在windows系统中,点击“开始”菜单,在VS的文件中中就可以找到 Developer Command Prompt的快捷方式。

    在这里插入图片描述

    2、执行单个cpp文件

    2.1 cpp文件内容

    用vs2017新建一个项目,包含main函数的run.cpp内容如下:

    #include 
    #include 
    
    
    int main(int argc,char *argv[])
    {
    	int a = 123;
    	std::string b = "hello command";
    	std::cout << "自定义变量:" << std::endl;
    	std::cout << "a=" << a<< std::endl;
    	std::cout << "b=" << b << std::endl;
    
    	std::cout << "main函数参数:" << std::endl;
    	std::cout << "argv[0]=" << argv[0] << std::endl;
    	std::cout << "argv[1]=" << argv[1] << std::endl;
    	std::cout << "argv[2]=" << argv[2] << std::endl;
    
    	system("pause");
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    不使用vs运行代码,可以看到解决方案文件夹下只有四个文件(使用vs运行代码后还会产生两个文件夹):

    在这里插入图片描述

    2.2 编译cpp文件

    打开Developer Command Prompt,并切换路径至run.cpp所在的文件夹:

    在这里插入图片描述
    (1)编译文件命令为:

    cl run.cpp

    cl是微软的C/C++优化编译器,执行命令后可以看到run.cpp被编译为了run.exe可执行文件,并产生了一个run.obj文件:

    在这里插入图片描述
    (2)使用 /EHsc 选项

    可以看到,直接使用 cl run.cpp 命令进行编译,会提示“使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc”。

    意思就是 /EHsc 不抛出C++异常,建议使用 /EHsc 选项。那么运行命令就是:

    cl /EHsc run.cpp

    是否使用 /EHsc 选项获得的编译结果是相同的,但我们应该优先使用/EHsc 选项进行编译。

    2.3 执行exe文件

    (1)run.exe是可以直接双击运行的,结果如下:
    在这里插入图片描述
    因为直接双击运行没有办法给main函数传参数,所以参数argv[1]和argv[2]无法打印。

    注意:argv[0]保存的是程序名,用户输入的main函数参数从argv[1]开始。

    (2)用命令执行run.exe

    直接输入命令 run.exe 就可以执行exe文件,因为没有传入main函数参数,所以结果和上面是一样的:

    在这里插入图片描述
    (3)用命令执行带main函数参数的run.exe

    给main函数传入两个参数,运行命令为:

    run.exe para1 para2

    现在就可以正常打印出所有参数了:
    在这里插入图片描述

  • 相关阅读:
    数据湖&湖仓一体简介
    sqlserver 删除master数据库特定前缀开头的所有表的sql语句
    【电商项目第三问】
    Python遥感开发之arcpy批量重采样
    create® 3入门教程-设置NTP
    MySql学习笔记11——DBA命令介绍
    小爱开直播了,欢迎大家微观
    An工具介绍之宽度工具、变形工具与套索工具
    阿里P7爆款《K8s+Jenkins》技术笔记,读了后确实有实质性的帮助
    SIT2515T-I/SO,SIT2515T-I/ST,MCP2515T-I/ST,MCP2515T-I/SO
  • 原文地址:https://blog.csdn.net/qq_43799400/article/details/126085175