如何用cmd命令行程序 cmd 编译运行c c 程序

用命令行调用VS2005的cl程序编译链接C的源文件
在项目开发过程中,有时会忘记语法的使用或者想弄清楚某段代码的逻辑问题,而又不想新建一个win32的项目去做,感觉像是割鸡用牛刀,这个时候就可以用cl编译器直接编译链接。
直接打开cmd命令行,输入cl /c test.c(/c表示编译不链接,test.c可以由txt变过来)提示错误,说stdio.h不包含路径集,意思是找不到stdio.h,错误信息如下图所示
这时需要运行vcvars32程序来Setting environment for using Microsoft Visual Studio 2005 x86 tools.也就是将c语言的头文件和链接库加入到环境变量中。
我们可以看到vcvars32命令行实际上执行了路径是F:\Visual Studio 2005\VS2005\Common7\Tools\vsvars32.bat的bat文件,我们来看看bat文件的内容,如下图所示
可能图片太小看不清楚,大家可以去vs2005的安装路径找VS2005\Common7\Tools\vsvars32.bat,虽然我不是很懂bat的语法,但可以看得出这是将vc的头文件和链接库加入到当前cmd命令的环境变量中。
这时再运行cl /c text.c,发现当前目录多了一个test.obj文件,再运行link test.obj,发现当前目录又多了一个test.exe,再运行test.exe,发现输出hello world,说明编译链接运行都成功了,如下图所示
其实你也可以直接使用开始菜单里的vs2005的tool目录的命令提示,这样就不用输入vcvars32了,因为它已经帮你设置好vc的头文件和链接库的环境变量,如下图所示
以上是我对cl的使用和理解,如果有什么错误的地方,希望大家指点,如果大家也有类似的经历和想法,欢迎分享,共同进步。
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
今日搜狐热点带你玩转Visual Studio——命令行编译C/C++程序
VS构建工具介绍
我们都知道C/C++源代码要生成可执行的.exe程序,需要经过编译、链接的过程。你在VS工具中只需要选择菜单Build或按一下F5可以编译、链接、运行了,其实IDE帮我隐藏了好多的具体细节。
我先假设VS2010安装在以下目录中:
C:Program Files (x86)Microsoft Visual Studio 10.0
打开安装目录下的VSDIRVCin可以看到一系列的可执行程序.exe和批处理文件,这些就是VS2010构建、编译、链接时要用到的工具。看一下几个主要的工具:
cl.exe:编译程序
link.exe:链接程序
lib.exe:加载lib库的程序
nmake.exe:用makefile进行构建、编译的工具
命令行编译程序
要在命令行(而不是VS)中编译程序,先要配制环境变量。网上有些教程说执行VSDIRVCin cvars32.bat的批处理就可以了,但我执行这个批处理时会报错:
Setting environment for using Microsoft Visual Studio 2010 x86 tools.
这又是另外一个问题,我就不管了,直接手动配制环境变量把:
右键我的计算机-&属性-&高级设置-&高级-&环境变量,配制的环境变量(建议配制在用户的环境变量中)的值如下:
VS2010_DIR:
C:Program Files (x86)Microsoft Visual Studio 10.0
C:Program Files (x86)Microsoft SDKs
C:UsersAdministrator.dnx%VS2010_DIR%VC%VS2010_DIR%Common7IDE
%VS2010_DIR%VC%WIN_SDK%Windows 7.0AI
%VS2010_DIR%VC%WIN_SDK%Windows 7.0AL
D:CppWorkspaceCommandTestHelloWorld.cpp:
int main()
std::cout && This is a native C++ program. && std::
printf(printf: Hello World);
编译结果:
命令行中编译C/C++程序
&vcD4NCjxwPkhlbGxvV29ybGQub2Jqvs3Kx7Hg0uuz9rXEtv69+NbGzsS8/qOsSGVsbG9Xb3JsZC5leGW+zcrHwbS907PJtcS/yda00NDOxLz+oaM8L3A+DQo8aHIgLz4NCjxoMiBpZD0="说明">说明
在以上的编译过程中我们只用了cl的编译命令就帮我们最终的可执行文件HelloWorld.exe,这是因为cl.exe程序在编译时自己会去调用link.exe、lib.exe等程序。
可通过&cl -help &查看常用的编译选项
创建小代码
创建快速代码
假设没有别名
控制内联展开
使用全局优化
生成内部函数&&& &作为程序员,如果仅仅只懂得如何在IDE上拖控件写程序,而不知道如何直接通过编译器编译程序的话。虽然说也没啥大不了的,但是如果掌握了手动编译的技能,那肯定会是一种炫技般的存在。从客观的角度来讲,一方面,这种技能帮你在同事或同学面前体现在自己的编程方面的&骨灰级&地位。另一方面,这种脱离了IDE的编译过程在你刷题的时候能帮你摆脱很多IDE上的恼人事故。
&&&& 实际上,网上一找,确实有不少这个方面的文章,不过好多都是基于32位的win7或者win8的系统的,很不巧的是,本人的电脑是64位的win10系统。在经历了很多次失后才终于将代码编译跑通。真是一把辛酸泪啊。下面就介绍下如何在64位win10系统中用cmd+notepad进行编译c++程序。
&&& 1)设置环境变量:我们知道,一般的C/C++程序开发经历三个过程:源代码的编辑&&编译生成.obj文件&&链接生成.exe文件。那么在这个过程中起到关键作用的就是编译器了,也就是我们要找到c++的编译器。如果你已经安装好visual studio的话,那就直接在文件中找就行。如果没有安装相应的安装包,那么我也会介绍另一种方法。先说已经安装VS的情况:找到文件的安装目录底下,如E:\各种软件的安装目录\VS2015,具体要看你自己的软件安装目录。而且基本上所有的VS版本,目录的名称都是几乎一致的,所以不用担心安装的版本路径名称会不一致的问题。如果找到的话,你应该能看到:
&&& 找到VC这个文件夹,当然你还能看到VB,VC#等,这些文件夹里包含了相关的语言环境包等,不用管,直接找到VC里的bin文件夹,然后将路径E:\各种软件的安装目录\VS2015\VC\bin加到系统的环境变量中去。至于环境变量怎么弄的话,找到我的电脑,右键属性,然后找到高级系统设置-&环境变量-&系统变量-&Path,新建一个,然后把路径添加进行就行。
&&& 这样做的目的,其实就是要让系统知道编译器在哪里,因为环境变量就是操作系统执行命令时的默认检索路径。有了这个环境变量的话,我们的电脑就能在指定的文件夹里找相应的文件。例如要寻找a.exe,就直接在命令行中输入a.exe就行,不用再将绝对路径的全部写进去。
&&& 如果你没有安装VS,那么你起码要有VC,如果你说你啥都没安装怎么办,那。。。。。那你还当啥程序员啊。。。。。。反正就是默认已经安装了VC的情况下,找到路径,如D:\Program Files\Microsoft Visual Studio\VC98\Bin,显然这也是我们需要的编译器的路径。编译程序除了需要编译器外,还需要提供系统库文件.lib,系统头文件。对应的路径在VC98文件夹中有相应的Lib和Include文件夹。下面也是要进行环境变量的设置,为了防止出问题,我们还需要找到VC98同级路径下的Common文件夹里的MSDev98\Bin,找找看有没有mspdb60.dll文件,如果有的话就直接将其路径,如D:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin和我们的D:\Program Files\Microsoft Visual Studio\VC98\Bin路径两个都加入到环境变量中。接着我们写一个批处理文件来导入相应的变量。写一个文本如下
INCLUDE&=&D:\Program&Files\Microsoft&Visual&Studio\VC98\Include&&
LIB&=&D:\Program&Files\Microsoft&Visual&Studio\VC98\Lib&
保存为Path.bat,然后运行就行。
通过上面的设置,我们在环境变量中加入了编译器的路径,为了测试下是否成功,可以在开始-&cmd中输入cl,看看是否有类似的窗口显示
有的话就说明成功了。
2)编程程序调试
虽然环境变量设置不太一样,但是上面两种情况的结果是大致一样的,因此下面按着第一种情况,也就是有VS的编译器的配置的时候来进行测试。
打开notepad,写上代码如下:
#include &iostream&
int main()
cout&&"Hellow World"&&
while (1){}
在任意的一个盘里,如F盘保存为test.cpp。然后打开cmd,输入 vcvars32.bat。接着要转到我们的代码的保存路径下,如F:,这时直接这输入F:
显示如下:
然后输入cl /EHsc test.cpp会出现如下:
哈哈,看到/out:test.exe了有木有。直接打开我们的F盘根文件夹,看看有没有exe文件!运行下:
是不是很有成就感!
有几点可以稍微注意下:1、只有2009以后的版本,在命令行编译时才需要先执行&vcvars32.bat&,之前的版本就不需要了。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 2、Visual Studio 2012以前的命令行编译参数一般用cl -GX xxx.cpp,2012以后建议用cl -EHsc xxx.cpp
阅读(...) 评论()45563人阅读
C/C++(4)
一直用java来写程序,java配置好jre路径之后,在cmd下编译运行,很方便。
刚好要给一个舍友改下C程序,想到可不可以像java一样在环境变量里配置好C的编译路径呢?
于是上网搜了一下,得到如下结果:
一、如果装有VC,那就简单了,因为VC带有C的编译器,可以将此路径设置进环境变量。
操作步骤如下:
1.在命令行下,先运行vcvars32.bat(此文件在VC安装目录/Bin文件夹里,其中设置了环境变量和路径等信息)。或者,手动修改环境变量:
path=你安装VS的路径/VC98/Bin
lib=你安装VS的路径/VC98/你安装VS的路径/VC98/MFC/lib
include=你安装VS的路径/VC98/你安装VS的路径/VC98/MFC/你安装VS的路径/VC98/ATL/lib
2.然后直接用CL编译器编译C++程序(如:CL /GX /MT zx.cpp)。
CL经常使用的选项为:
&& 多线程dll(/MD)-动态链接,不包含运行时库文件
&& 多线程(/MT)-静态链接,包含运行时库文件
附:CL 参数,即编译选项如下:
-优化- /O1 最小化空间&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&& /Op[-] 改善浮点数一致性 /O2 最大化速度&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /Os 优选代码空间 /Oa 假设没有别名&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /Ot 优选代码速度 /Ob&n& 内联展开(默认 n=0)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /Ow 假设交叉函数别名 /Od 禁用优化(默认值)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /Ox 最大化选项。(/Ogityb2 /Gs) /Og 启用全局优化&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /Oy[-] 启用框架指针省略 /Oi 启用内部函数 -代码生成- /G3 为 80386 进行优化&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /Gh 启用 _penter 函数调用 /G4 为 80486 进行优化&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /GH 启用 _pexit 函数调用 /G5 为 Pentium 进行优化&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /GR[-] 启用 C++ RTTI /G6 对 PPro、P-II、P-III 进行优化 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /GX[-] 启用 C++ EH (与 /EHsc 相同) /G7 对 Pentium 4 或 Athlon 进行优化&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /EHs 启用 C++ EH (没有 SEH 异常) /GB 为混合模型进行优化(默认) &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /EHa 启用 C++ EH(w/ SEH 异常) /Gd __cdecl 调用约定 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /EHc extern "C" 默认为 nothrow /Gr __fastcall 调用约定 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /GT 生成纤维安全&& TLS 访问 /Gz __stdcall 调用约定&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /Gm[-] 启用最小重新生成 /GA 为 Windows 应用程序进行优化 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /GL[-] 启用链接时代码生成 /Gf 启用字符串池 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /QIfdiv[-] 启用 Pentium FDIV 修复 /GF 启用只读字符串池 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /QI0f[-] 启用 Pentium 0x0f 修复 /Gy 分隔链接器函数 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /QIfist[-] 使用 FIST 而不是 ftol() /GZ 启用堆栈检查(/RTCs) &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /RTC1 启用快速检查(/RTCsu) /Ge 对所有函数强制堆栈检查 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /RTCc 转换为较小的类型检查 /Gs[num]&& 控制堆栈检查调用&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /RTCs 堆栈帧运行时检查 /GS 启用安全检查 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /RTCu 未初始化的本地用法检查 /clr[:noAssembly] 为公共语言运行库编译 &&&&&&&&&& noAssembly - 不产生程序集 /arch:&SSE|SSE2& CPU 结构的最低要求,以下内容之一: &&&&&&&&&&&&&&&&&&&&&&& SSE - 启用支持 SSE 的 CPU 可用的指令 &&&&&&&&&&&&&&&&&&&&&&& SSE2 - 启用支持 SSE2 的 CPU 可用的指令 -输出文件- /Fa[file] 命名程序集列表文件 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /Fo&file& 命名对象文件 /FA[sc] 配置程序集列表&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /Fp&file& 命名预编译头文件 /Fd[file] 命名 .PDB 文件&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /Fr[file] 命名源浏览器文件 /Fe&file& 命名可执行文件 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /FR[file] 命名扩展 .SBR 文件 /Fm[file] 命名映射文件 -预处理器- /AI&dir& 添加到程序集搜索路径&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /Fx 将插入的代码合并到文件 /FU&file& 强制使用程序集/模块&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /FI&file& 命名强制包含文件 /C 不抽出注释&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /U&name& 移除预定义宏 /D&name&{=|#}&text& 定义宏&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /u 移除所有预定义宏 /E 预处理到 stdout&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /I&dir& 添加到包含搜索路径 /EP 预处理到 stdout,没有 #line&&&&&&&&&&&&&&&&&&&&&&&&&&&& /X 忽略&标准位置& /P 预处理到文件 -语言- /Zi 启用调试信息&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /Ze 启用扩展(默认) /ZI 启用&编辑并继续&调试信息&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /Zl 省略 .OBJ 中的默认库名 /Z7 启用旧式调试信息&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /Zg 生成函数原型 /Zd 仅有行号调试信息&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /Zs 只进行语法检查 /Zp[n] 在 n 字节边界上包装结构&&&&&&&&&&&&&&&&&&&&&&&&&&&& /vd{0|1} 禁用/启用 vtordisp /Za 禁用扩展(暗指 /Op)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /vm&x& 指向成员的指针类型 /Zc:arg1[,arg2] C++ 语言一致性,这里的参数可以是: &&&&&&&&&&&&&&&&&&&&& forScope - 对范围规则强制使用标准 C++ &&&&&&&&&&&&&&&&&&&&& wchar_t - wchar_t 是本机类型,不是 typedef - 杂项 - @&file& 选项响应文件&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /wo&n& 发出一次警告 n /?, /help 打印此帮助消息&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /w&l&&n& 为 n 设置警告等级 1-4 /c 只编译,不链接&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /W&n& 设置警告等级(默认 n=1) /H&num& 最大外部名称长度&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /Wall 启用所有警告 /J 默认 char 类型是 unsigned&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /Wp64 启用 64 位端口定位警告 /nologo 取消显示版权消息&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /WX 将警告视为错误 /showIncludes 显示包含文件名&&&&&&&&&&&&&&&&&&&&&&&&&&& /WL 启用单行诊断 /Tc&source file& 将文件编译为 .c&&&&&&&&&&&&&&&&&&&&&&&&& /Yc[file] 创建 .PCH 文件 /Tp&source file& 将文件编译为 .cpp &&&&&&&&&&&&&&&&& /Yd 将调试信息放在每个 .OBJ 中 /TC 将所有文件编译为 .c&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /Yl[sym] 为调试库插入 .PCH 引用 /TP 将所有文件编译为 .cpp&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /Yu[file] 使用 .PCH 文件 /V&string& 设置版本字符串 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /YX[file] 自动 .PCH /w 禁用所有警告&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&& /Y- 禁用所有 PCH 选项 /wd&n& 禁用警告 n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&& &&& /Zm&n& 最大内存分配(默认为 %) /we&n& 将警告 n 视为错误 -链接- /MD 与 MSVCRT.LIB 链接&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& && /MDd 与 MSVCRTD.LIB 调试库链接 /ML 与 LIBC.LIB 链接&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /MLd 与 LIBCD.LIB 调试库链接 /MT 与 LIBCMT.LIB 链接&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /MTd 与 LIBCMTD.LIB 调试库链接 /LD 创建 .DLL&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /F&num& 设置堆栈大小 /LDd 创建 .DLL 调试库&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /link [链接器选项和库]&&
关于链接时参数的说明:
&配置属性&C/C++&代码生成&运行时库 可以采用的方式有:多线程(/MT)、多线程调试(/MTd)、多线程DLL(/MD)、多线程调试DLL(/MDd)、单线程(/ML)、单线程调试(/MLd)。
Reusable Library
Macro(s) Defined
Single Threaded
Static MultiThread
Dynamic Link (DLL)
_MT and _DLL
Debug Single Threaded
Debug Static MultiThread
_DEBUG and _MT
Debug Dynamic Link (DLL)
_DEBUG, _MT, and _DLL
&&& 其中以小写&d&结尾的选项表示的DEBUG版本的,没有&d&的为RELEASE版本。大型项目中必须要求所有组件和第三方库的运行时库是统一的,否则将会出现井喷。
&&& 单线程运行时库选项/ML和/MLd在VS2003以后就被废了。
&&& /MT和/MTd表示采用多线程CRT库的静态lib版本。该选项会在编译时将运行时库以静态lib的形式完全嵌入。该选项生成的可执行文件运行时不需要运行时库dll的参加,会获得轻微的性能提升,但最终生成的二进制代码因链入庞大的运行时库实现而变得非常臃肿。当某项目以静态链接库的形式嵌入到多个项目,则可能造成运行时库的内存管理有多份,最终将导致致命的&Invalid Address specified to RtlValidateHeap&问题。另外托管C++和中不再支持/MT和/MTd选项。
&&& /MD和/MDd表示采用多线程CRT库的动态dll版本,会使应用程序使用运行时库特定版本的多线程DLL。链接时将按照传统VC链接dll的方式将运行时库MSVCRxx.DLL的导入库MSVCRT.lib链接,在运行时要求安装了相应版本的VC运行时库可再发行组件包(当然把这些运行时库dll放在应用程序目录下也是可以的)。 因/MD和/MDd方式不会将运行时库链接到可执行文件内部,可有效减少可执行文件尺寸。当多项目以MD方式运作时,其内部会采用同一个堆,内存管理将被简化,问题也能得到缓解。
&&& 结论:/MD和/MDd将是潮流所趋,/ML和/MLd方式请及时放弃,/MT和/MTd在非必要时最好也不要采用了。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:133449次
积分:1278
积分:1278
排名:千里之外
原创:25篇
转载:12篇
评论:22条
(4)(10)(4)(1)(2)(2)(7)(5)(2)分享给朋友:通用代码: <input id="link4" type="text" class="form_input form_input_s" value="" />复 制flash地址: 复 制html代码: <input type="text" class="form_input form_input_s" id="link3" value="" />复 制分享视频到站外获取收益&&手机扫码分享视频二维码2小时内有效linux下命令行创建编译运行C程序下载至电脑扫码用手机看用或微信扫码在手机上继续观看二维码2小时内有效linux下命令行创建编译运行C程序扫码用手机继续看用或微信扫码在手机上继续观看二维码2小时内有效,扫码后可分享给好友没有优酷APP?立即下载请根据您的设备选择下载版本
药品服务许可证(京)-经营-请使用者仔细阅读优酷、、Copyright(C)2017 优酷
版权所有不良信息举报电话:

我要回帖

更多关于 命令行编译java程序 的文章

 

随机推荐