Windows的cmd运行编译器(cmd运行c/c++、python等)

这篇具有很好参考价值的文章主要介绍了Windows的cmd运行编译器(cmd运行c/c++、python等)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录
一、cmd.exe
二、cmd.exe运行编译器gcc.exe/g++.exe执行C/C++程序代码
三、gcc.exe与g++.exe的区别及其使用注意事项
1、文件格式问题
2、标准库问题
3、语法规范问题
4、extern "C"声明问题与重载函数(overloaded function)
四、cmd运行python解释器执行python程序代码

Windows的cmd运行编译器(cmd运行c/c++、python等)

      前面我们已讲述了编译器(Compiler)及C/C++编译器安装(c+安装)中的一、五,已经提到任何一种编程语言,只要安装了这个编程语言的编译器(compiler),在windows平台中可以使用cmd调用该编译器运行该编程语言的程序代码。下面我们以C/C++为例,讲述windows的cmd.exe 运行C/C++,其它编程语言类似,只是编译器不同。下面讲到的C/C++编译器是基于MinGW-w64编译器套件的。

一、cmd.exe简介

       cmd是 Windows 系统的一种命令行操作工具,用户可以通过输入命令来完成各种各样的系统或程序操作。

       我们使用win+r快捷键(也即Windows+R)打开运行窗口,输入cmd并确定,打开cmd命令提示符窗口,进入图1-1界面,右键cmd.exe顶部,可以在弹出的菜单中选择属性进行设置,可以设置颜色、字体等。

windows cmd python,computer,cmd,编译器,extern,重载函数,gcc,g++,powershell

图1-1  cmd.exe

        在使用cmd时,需要熟悉windows的一些CMD命令,下面列出几个cmd命令:

       按ctr+c键:cmd.exe中退出正在执行的命令操作,即中断执行命令;

       cls:清屏,清除cmd屏幕的历史输入;

       cd: 全称change directory,进入某目录(改变目录);

                 cd 目录名为进入当前路径里的某个目录;

                 cd 目录1\目录2\目录3为进入当前路径里的子路径(多级目录构成的子路径);

                 cd..为返回到上一级目录;

                 cd\为返回到根目录盘符;

                 进入某个盘符,直接输入盘符即可,比如:输入D:则返回到根目录盘符D:\;

        help:显示常用的命令(有些命令没显示出),help 命令名,显示该命令名的基本使用。

       CMD命令有很多,使用这些命令,能实现目录操作、网络操作、进程操作、服务操作运行操作、计算机控制操作等。

二、cmd.exe运行编译器gcc.exe/g++.exe执行C/C++程序代码

        我们以C语言为例。依据C语言的语法规范,我们把c代码写到.txt文件中,并保存为.c后缀的文件,我们把下面代码保存到cr.txt记事本中。

#include<stdio.h>
int main(void) {
	int i;
	for (i = 50; i <= 100; i++) {
		if (i%5==0)
			printf("%d ", i);	
	}
	printf("\n");
}

      然后改cr.txt的后缀变成cr.c。在改后缀前应该先打开文件夹并单击查看图标,勾选文件扩展名,如图2-1所示,这样显示扩展名才能成功修改后缀,否则,隐藏了扩展名,实际修改为cr.c.txt,运行时也就会提示No such file or directory,no input files。

windows cmd python,computer,cmd,编译器,extern,重载函数,gcc,g++,powershell

图2-1 文件夹的文件扩展名

       

       启动cmd命令行窗口,在窗口输入如图2-2所示的操作,即可实现cr.c程序的运行。

windows cmd python,computer,cmd,编译器,extern,重载函数,gcc,g++,powershell

图2-2  cmd.exe运行c

       第一行操作cd cj是进入文件夹cj,文件cr.c在该文件夹中;

       第二行操作gcc cr.c为调用gcc.exe编译器编译cr.c文件,默认生成文件名为a.exe可执行文件;

       第三行操作运行可执行文件a.exe;

       第四行操作gcc cr.c -o cr.exe为调用gcc.exe编译器编译cr.c文件且生成指定文件名为cr.exe可执行文件,o相当于output的简写。

       第五行操作运行可执行文件cr.exe。

       注意,上面提到的生成文件的后缀在不同操作系统时不同的,在windows生成的是.exe后缀格式,在linux系统生成的是.out后缀格式。

       在cmd.exe中编辑或查看cr.c文件,可以使用命令notepad cr.c,如图2-3所示以文本编辑器打开cr.c文件,打开后就可以编辑(写)代码了,保存即可。

windows cmd python,computer,cmd,编译器,extern,重载函数,gcc,g++,powershell

图2-3  cmd文本编辑器打开cr.c

        c++(c plus plus)是在c的基础上发展出来的面向对象编程,因而,c语言的代码规范通常也适合c++(也即C语言的代码通常都可以用于C++),当然也有特殊情形,毕竟后者是面向对象的,是在前者基础上的扩充。上面的代码也可以保存为cr.cpp称为C++文件,后缀cpp也就是c plus plus的简写。我们也可以用gcc.exe来编译C++文件cr.cpp,下面图2-4运行了c++文件cr.cpp和c文件cr.c。

windows cmd python,computer,cmd,编译器,extern,重载函数,gcc,g++,powershell

图2-4  cmd.exe运行c++

       上面都是先把程序通过编译器gcc.exe编译成可执行文件.exe,然后执行该文件,即可实现程序的执行。一般来讲,使用gcc.exe或g++.exe编译器都可以编译c和c++,但它们也有一定差异。另外,c/c++运行程序,程序中通常有一个主函数main。

三、gcc.exe与g++.exe的区别及其使用注意事项

      gcc.exe或g++.exe运行并不是单个文件就能运行,它们都有依赖项(依赖文件),与依赖项构成编译功能。

1、文件格式问题

      gcc.exe在编译时将.c文件视为 C 文件(C源码文件),将.cpp文件视为C++文件(C++源码文件),而g++.exe在编译时将 .c 和 .cpp 文件都视为C++文件(也即都作为.cpp文件)。

2、标准库问题

      使用gcc.exe编译.cpp程序时,如果程序需要链接到C++标准库(C++ Standard Library),gcc.exe默认情况下不会链接到C++标准库,需要使用选项参数(也称为flag)-lstdc++,让编译器gcc.exe能连接到c++标准库。而用g++.exe编译.cpp程序时能自动连接C++标准库。C++标准库(C++ Standard Library)是C++自带的库。

#include <iostream>
using namespace std;
int main(){
	int i=3;
	cout << i << endl;
	return 0;
}

     上面代码用g++ main.cpp可以编译,但gcc main.cpp 运行提示undefined reference to `std::ostream::operator,因为gcc.exe编译器不能链接到C++标准库,需要增加选项参数-lstdc++才能链接到C++标准库,即使用命令gcc main.cpp -lstdc++可以链接到C++标准库并完成编译。

3、语法规范问题

       c++(c plus plus)是在c的基础上发展出来的面向对象编程,因而,c语言的代码规范通常也适合c++(也即C语言的代码通常都可以用于C++),但也有特殊情形,毕竟后者是面向对象的,是在前者基础上的扩充,两者的代码规范仍然有一定的差异,当出现这种情形时,g++.exe编译.c文件时,把.c文件当着C++文件进行编译,可能会报错。

#include <stdio.h>

int main(void)
{
    int new = 2;
    printf("new=%d\n", new);
    return new;
}

       上面代码用gcc main.c可以运行,但用g++ main.c会报错,提示expected unqualified-id before 'new',因为g++ main.c是把.c文件当着.cpp来编译,而new是 C++ 中是保留关键字,不能用作变量名称。

      因此,在cmd.exe操作中,对于c程序,我们最好用gcc.exe,对于c++程序,我们最好用g++.exe。gcc.exe和g++.exe是两个独立的编译器,它们没有互相调用的关系。

4、extern "C"声明问题与重载函数(overloaded function)

       在c++代码中出现 extern "C" void func(int x, int y),表示调用c中的函数。

       由于c++中支持重载函数(overloaded function,函数重载),也即只要函数参数有差异(参数个数,参数类型),函数名可以相同,这在c或python等语言中是不支持这种形式的,因为它们的编译特点不支持区分。在c++中编译后的函数符号(函数名称)与原函数名和函数参数有关,而在c中编译后的函数符号(函数名称)只与原函数名有关,比如:void func(int x, int y)在c++中我们可以理解为类似编译为_func_int_int名称,但void func(int x, int y)在c中编译为_func名称,实际如何编译与编译器有关。因此,在c++中只要参数有差异,同名的函数名编译后还是能区分的,但在c中即使参数不同,同名的函数编译后是不能区分的,同理python也是类似。

       在c++增加extern "C"声明后,即extern "C" void func(int x, int y),则是告诉c++编译器是调用c中的函数,而不是调用c++中的函数,但知道调用哪个func函数后,函数func的代码是按C还是按C++编译由编译器决定。

/*头文件func.h:*/

#include <stdio.h>
void func(); //声明declare

/*C文件func.c:*/

#include "func.h"
void func()
{
    printf("Hi!\n");
}

/*C++文件main.cpp:*/

#include "func.h"
int main()
{
  func();
  return 0;
 }

      上述三个文件使用命令gcc main.cpp func.c -o kk编译会报错,提示undefined reference to `func()',这是因为main.cpp是按C++编译,main.cpp中的func编译后的符号名称与原函数名和参数有关,而命令中的func.c编译后的符号名称只与原函数名有关,因而,两者是不能匹配的,因此会出现找不到函数名的错误。但用g++ main.cpp func.c -o kk命令是可行的,因为命令中main.cpp和func.c都是按.cpp编译,因而编译后的func的函数符号名称是能够匹配的。

        我们在main.cpp中增加extern "C"声明,记为main1.cpp文件:

extern "C" void func();
int main()
{
  func();
  return 0;
 }

       注意,代码中需要去掉#include "func.h"语句,若保留,相当于先调用函数,后extern "C"声明,产生冲突,去掉该语句后,先声明,然后调用才符合逻辑关系。这时候使用命令gcc main1.cpp func.c -o kk是可行的,这时main.cpp中函数func调用已指定使用.c文件的,而命令func.c也是按C文件编译,因此,两者能匹配成功,调用关系可行。但命令g++ main1.cpp func.c -o kk会报错,提示undefined reference to `func()',因为main.cpp中函数func调用已指定使用.c文件的,而命令中的func.c按.cpp编译,两者不能匹配,因此,调用关系不可行。

       当然也可以不在c++中extern "C"声明,而在.h头文件中进行extern "C"声明,也可以达到这种效果。

        我们把头文件func.h中的代码增加条件判断,修改后的文件仍记为func.h文件(也可以记为其它名称,但其它文件调用的这个头文件名称也要修改):

#ifdef __cplusplus//两个下划线_
extern "C"{
#endif
 
#include <stdio.h>
    void func();
    
#ifdef __cplusplus 
}
#endif

       这种修改相当于增加条件判断语句,也就是判断为c++文件,则进行extern "C"声明,否则不声明。这时候使用命令gcc main.cpp func.c -o kk是可行的,这时main.cpp中函数func调用已指定使用.c文件的(头文件进行了判断选择),而命令func.c也是按C文件编译(头文件进行了判断选择),因此,两者能匹配成功,调用关系可行。命令g++ main.cpp func.c -o kk也是可行的,因为main.cpp中函数func调用已指定使用.c文件(头文件进行了判断选择),而命令中的func.c的代码虽然是按.cpp编译,但也已指定调用.c文件(头文件进行了判断选择),因此,两者能匹配成功,调用关系可行。

      此外,更多的gcc操作选项(操作参数)可以参考https://gcc.gnu.org/对应版本的GCC的documentation说明。

四、cmd运行python解释器执行python程序代码

       CMD.exe运行python程序代码,原理类似cmd运行c/c++。依据python语言的语法规范,我们把python代码写到.txt文件中,并保存为.py后缀的文件,我们把下面代码保存到pr.txt记事本中。

d0=100
class AA:
    a1 = 2

    def __init__(self, b1):
        self.b1 = b1

    def func(self):
        ge1=d0+self.a1+self.b1
        return ge1

print(AA(1).func())

        然后改pr.txt的后缀变成pr.py(后缀修改注意事项同二、)。启动cmd命令窗口,在窗口输入如图4-1所示的操作,即可实现pr.py程序的运行。

windows cmd python,computer,cmd,编译器,extern,重载函数,gcc,g++,powershell

图4-1  cmd.exe运行python

        从广义上讲,python解释器也是一个编译器。CMD是调用python的解释器来运行python程序代码,当然,在调用运行前,需要先安装python,并在windows中配置好python环境变量,可以手动配置环境变量(设置方法参见https://blog.csdn.net/thefg/article/details/131916203
中的四、),但在安装python时会提示勾选在windows系统中生成python环境变量。

        同理,其他编程语言也可以类似在windows的cmd.exe命令行中运行。

       另外,在windows的powershell.exe命令行中也可以运行编译器,但生成的.exe文件一般需要增加.\才能运行,powershell.exe命令行的功能比cmd.exe命令行更强大,下图4-2用powershell.exe运行编程语言。

windows cmd python,computer,cmd,编译器,extern,重载函数,gcc,g++,powershell

图4-2  PowerShell.exe运行编程语言

编译器(Compiler)及C/C++编译器安装(c+安装):
https://blog.csdn.net/thefg/article/details/131916203

2023年最新VS Code安装详细教程及vs code配置:

https://blog.csdn.net/thefg/article/details/131752996文章来源地址https://www.toymoban.com/news/detail-763614.html

最后, 欢迎你点赞、收藏、关注!

到了这里,关于Windows的cmd运行编译器(cmd运行c/c++、python等)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MinGW-w64的安装详细步骤(c/c++的编译器gcc、g++的windows版,win10、win11真实可用)

    MinGW(Minimalist GNU for Windows) 是一个用于 Windows 平台的开发工具集,它提供了一组 GNU 工具和库,可以用于编译和构建本地的 Windows 应用程序。 MinGW 的目标是在 Windows 环境下提供类似于 Unix/Linux 环境下的开发工具,使开发者能够轻松地在 Windows 上编写和编译 C、C++ 等程序。

    2024年02月13日
    浏览(41)
  • Ubuntu 用gcc/CMakefile编译器 编译、运行c语言程序

    目录 一. 在Ubuntu系统下用c语言编写一个简单的输出hello world 的程序,并编译、运行。 1.1 gcc/g++简介 1.2 c++程序输出 Hello World: 1.3 c语言程序输出 Hello World: 二. 编写一个主程序文件main1.c和一个子程序文件sub1.c,实现函数间的调用 2.1  编写sub1.c 和main1.c 函数 2.1.1 编写sub1.c函数

    2024年02月04日
    浏览(22)
  • webstom编译器运行uniapp项目(微信小程序)

    首先我们需要下载一个插件“Uniapp Tool” 然后在设置中进行HbuilderX路径和微信开发者工具路径配置 最后添加运行方式 最终我们就可以在webstom上运行uniapp项目到小程序,在这里你需要修改appid为微信小程序的appid

    2024年02月02日
    浏览(27)
  • 为 Microsoft C++ 配置 VS Code在本教程中,您将配置 Visual Studio Code 以在 Windows 上使用 Microsoft Visual C++ 编译器和调试器

    在本教程中,您将配置 Visual Studio Code 以在 Windows 上使用 Microsoft Visual C++ 编译器和调试器。 配置完 VS Code 后,你将在 VS Code 中编译和调试一个简单的 Hello World 程序。本教程不教您有关 Microsoft C++ 工具集或 C++ 语言的详细信息。对于这些主题,网上有很多很好的资源。 如果您

    2024年02月10日
    浏览(44)
  • python在线编译器搭建,python在线编译器源码

    本篇文章给大家谈谈python在线编译器搭建,以及python在线编译器源码,希望对各位有所帮助,不要忘了收藏本站喔。 1. PyCharm集成开发环境 2. PyCharm的下载与安装 3. Pycharm的使用 3.1 创建Python项目 3.2 创建子目录 3.3 创建Python文件 3.4 切换解释器 3.5 常用快捷键 4. Pycharm常用配置

    2024年03月25日
    浏览(33)
  • 关于 Qt在windows使用mingw32编译器时从Qt5.9切换至Qt5.12出现“C2001:常量中有换行符“不修改编码 的解决方法

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/131901444 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门)   研发项目先

    2024年02月15日
    浏览(28)
  • Python 编译器

    什么是编译器 Python 编译器的发展历程 Python 编译器的类型 常见的 Python 编译器 如何选择 Python 编译器 Python Logo 编译器是将源代码转换成可执行代码的程序。Python 作为一门高级编程语言,需要借助编译器将代码转换成机器语言,以便计算机识别并执行。 早期版本的 CPython 解释

    2024年02月11日
    浏览(22)
  • python有哪些编译器

    python有哪些编译器 1、Brython把Python转换成Javascript代码。 是一个流行的Python编译器,它可以把Python转换成Javascript代码。该软件支持所有网络浏览器(包括手机网络浏览器)。 它还支持最新的Html5/CSS3标准,可以使用流行的CSS框架,如BootStrap3和LESS。 2、Pyjs是一个轻量级的Python编译

    2024年02月05日
    浏览(21)
  • 【python】python编译器以及安装

    ✅作者简介:一名在读大二学生,希望大家多多支持 🔥系列专栏:python 💬个人主页:小园园子的CSDN博客 详细内容 为什么会有编译器/解释器? 编译器与解释器 编译器/解释器:高级语言与机器之间的翻译官 都是将代码翻译成机器可以执行的二进制机器码,只不过在运行原

    2024年02月16日
    浏览(22)
  • python编程——编译器与解释器

    作者: Insist-- 个人主页: insist--个人主页 本文专栏: python专栏 专栏介绍: 本专栏为 免费 专栏,并且会持续更新python基础知识,欢迎各位订阅关注。 目录 一、编译器与解释器的介绍 二、编译器与解释器的区别 三、python编译器与解释器种类 1、Brython 2、winPython 3、Pyjs 四、

    2024年02月07日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包