代码名称: | 如何在命令行下编译创建VC程序 | ||
更新日期: | 2004-6-30 | 代码作者: | 一剑(翻译) |
代码来源: | www.czvc.com | 文件大小: | 2KB |
下载次数: | 1945 | 评论条数: | 16 |
代码下载: | ![]() | 浏览次数: | 8250 |
演示截图: | ![]() |
代码简介或代码解析: | |
如何在命令行下编译创建VC程序 大多数MS Visual C++创建的程序用VC编译器是很容易编译并创建出可执行文件的。但有时,你可能需要从命令提示行运行程序。这个例子将阐述如何用命令行编译创建VC程序。 VC默认安装成功后,并不具备能从命令行编译创建VC程序这一特征。我们必须做如下3步工作: 1 打开DOS命令提示符窗口。 2 在C盘根目录下输入: CD Program Files/Microsoft Visual Studio/VC98/Bin 回车进入到如下目录: C:/Program Files/Microsoft Visual Studio/VC98/Bin> 3 然后输入VCVARS32再回车,你可以看到如下信息: C:/Program Files/Microsoft Visual Studio/VC98/Bin>VCVARS32 Setting environment for using Microsoft Visual C++ tools. 如图1: ![]() 图1 好了,至此相关设置完成,接下来我们将在命令行下编译创建一个VC程序: 1 打开VC,选择NEW,在工程属性页选择“Win32 Console Application”,这里我把它命名为AConsoleApp, 我的工程目录为:D:/MyProgram2/AConsoleApp,然后OK创建一个空的Win32控制台工程。 2 新建一个C++文档main.cpp,输入如下代码: #include using namespace std; int main() { cout << "/nC++ is Fun!!!/n"; return 0; } 保存所有文档,关闭工程。 3 打开DOS命令提示符窗口,使当前目录为D:/MyProgram2/AConsoleApp>,然后输入CL main.cpp,回车,可以看到如下信息: D:/MyProgram2/AConsoleApp>CL main.cpp Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86 Copyright (C) Microsoft Corp 1984-1998. All rights reserved. main.cpp C:/Program Files/Microsoft Visual Studio/VC98/include/istream(547) : warning C45 30: C++ exception handler used, but unwind semantics are not enabled. Specify -G X C:/Program Files/Microsoft Visual Studio/VC98/include/ostream(234) : warning C45 30: C++ exception handler used, but unwind semantics are not enabled. Specify -G X C:/Program Files/Microsoft Visual Studio/VC98/include/ostream(229) : whi le compiling class-template member function 'class std::basic_ostream t std::char_traits > &__thiscall std::basic_ostream traits >::put(char)' C:/Program Files/Microsoft Visual Studio/VC98/include/ostream(234) : warning C45 30: C++ exception handler used, but unwind semantics are not enabled. Specify -G X C:/Program Files/Microsoft Visual Studio/VC98/include/ostream(229) : whi le compiling class-template member function 'class std::basic_ostream hort,struct std::char_traits > &__thiscall std::basic_ostream signed short,struct std::char_traits >::put(unsigned short)' C:/Program Files/Microsoft Visual Studio/VC98/include/istream(46) : warning C453 0: C++ exception handler used, but unwind semantics are not enabled. Specify -GX C:/Program Files/Microsoft Visual Studio/VC98/include/istream(41) : whil e compiling class-template member function 'bool __thiscall std::basic_istream har,struct std::char_traits >::ipfx(bool)' C:/Program Files/Microsoft Visual Studio/VC98/include/istream(46) : warning C453 0: C++ exception handler used, but unwind semantics are not enabled. Specify -GX C:/Program Files/Microsoft Visual Studio/VC98/include/istream(41) : whil e compiling class-template member function 'bool __thiscall std::basic_istream nsigned short,struct std::char_traits >::ipfx(bool)' C:/Program Files/Microsoft Visual Studio/VC98/include/xstring(525) : warning C45 30: C++ exception handler used, but unwind semantics are not enabled. Specify -G X C:/Program Files/Microsoft Visual Studio/VC98/include/xstring(521) : whi le compiling class-template member function 'void __thiscall std::basic_string har,struct std::char_traits ,class std::allocator >::_Copy(unsigned i nt)' C:/Program Files/Microsoft Visual Studio/VC98/include/ostream(296) : warning C45 30: C++ exception handler used, but unwind semantics are not enabled. Specify -G X main.cpp(6) : see reference to function template instantiation 'class st d::basic_ostream > &__cdecl std::operator <<( class std::basic_ostream > &,const char *)' b eing compiled Microsoft (R) Incremental Linker Version 6.00.8168 Copyright (C) Microsoft Corp 1992-1998. All rights reserved. /out:main.exe main.obj D:/MyProgram2/AConsoleApp> 此时你可以发现目录D:/MyProgram2/AConsoleApp>下已经生成了可执行文件main.exe,您可以在命令行环境下执行它,输入main并回车,结果如下: D:/MyProgram2/AConsoleApp>main C++ is Fun!!! D:/MyProgram2/AConsoleApp> 如图2: ![]() 图2 最后谈谈main()函数及其参数 C++标准允许主函数main()有或没有参数列表。 您能在主函数main()中使用一个或更多的参数。 如下是一些惯例: int main(int argc, char *argv[]) 第一个参数argc,指明有多少个参数将被传递给主函数main(),真正的参数以字符串数组(即第2个参数argv[])的形式来传递。每一个字符串均有自己意思。在这句法上面, 记住, argc代表参数的数量, main()函数本身是在索引0为的第一参数。 所以, argc总是至少为1 。它的总数是从argv列阵的元素数目。 这意味着, argv[0]的值是至关重要的。 如果用户在控制台环境中程序名称后键入含参数的指令, 那么随后的参数将传递给argv[1] 。 例如, 如果程序名称为main,并且已经事先编译好了,这时如果用户键入: D:/MyPrograms/AConsoleApp/main 68 值68将会传递给argv[1] 当然取决于你怎么样来编写程序了,也许你的用户将可以输入如下指令: D:/MyPrograms/AConsoleApp/main 68 1250.50 因为参数argv是一些字符串,将这些字符串转换为你需要的值就是我们程序员的任务了。所以用户输入下面这样的指令: D:/MyPrograms/AConsoleApp/main 68 1250.50 并不意味着68是一个整形,而1250.50是一个double,当然C/C++编译器为我们提供了一些转换函数,你可以用atoi()函数把字串68转换为整形。同样,你可以用atof()函数把字串1250.50转换为double类型 如果用户输入一个字符,值将用单引号,如果是字符传将用双引号。用这种技术,用户将被允许使用数字、字符及字符串作为程序的参数来运行程序。 1 为了演示在主函数main()中使用数字参数,改变上例代码如下: #include using namespace std; int main(int argc, char *argv[]) { double Operand1, Operand2, Addition; Operand1 = atoi( argv[1] ); Operand2 = atoi( argv[2] ); Addition = Operand1 + Operand2; cout << "/nFirst Number: " << Operand1; cout << "/nSecond Number: " << Operand2 << endl; cout << Operand1 << " + " << Operand2 << " = " << Addition << endl; return 0; } 保存文件,关闭VC工程,在命令行下输入CL main.cpp回车,这时生成了新的main.exe程序,再在命令行输入main 48.52 1205回车,你会看到如下运行结果: D:/MyProgram2/AConsoleApp>main 48.52 1205 First Number: 48 Second Number: 1205 48 + 1205 = 1253 D:/MyProgram2/AConsoleApp> 见图3 ![]() 图3 2 为了演示字符串参数情况,改变代码如下: #include using namespace std; int main(int argc, char *argv[]) { char Sentence[40]; strcpy(Sentence, argv[1]); cout << "You typed " << Sentence<< endl; return 0; } 然后再CL main.cpp编译后输入指令main www.czvc.com回车后有: D:/MyProgram2/AConsoleApp>main www.czvc.com You typed www.czvc.com D:/MyProgram2/AConsoleApp> 见图4 ![]() 图4 3 最后再看一例字串和数字并用的情况,改变代码如下: #include using namespace std; int main(int argc, char *argv[]) { char FullName[40], strGender[20]; char cGender[10]; float Salary; strcpy(FullName, argv[1]); Salary = atof(argv[2]); strcpy(cGender, argv[3]); if( cGender == "m" || cGender == "M" ) strcpy(strGender, "Male"); else if( cGender == "f" || cGender == "F" ) strcpy(strGender, "Female"); else strcpy(strGender, "Unknown Gender"); cout << "Employee Information"; cout << "/nFull Name: " << FullName; cout << "/nGender: " << strGender; cout << "/nSalary: " << Salary << endl; return 0; } 然后再CL main.cpp编译后输入指令main "WWW.CZVC.COM, LOOMMAN NETWORKS" 18.52 "M"回车后有: D:/MyProgram2/AConsoleApp>main "WWW.CZVC.COM, LOOMMAN NETWORKS" 18.52 "M" Employee Information Full Name: WWW.CZVC.COM, LOOMMAN NETWORKS Gender: Unknown Gender Salary: 18.52 D:/MyProgram2/AConsoleApp> 见图5 ![]() 图5 |
【本代码共有16条评论信息】 |