windows 环境下 cpp 文件命令行编译的配置 & 带参数的main函数的编译和运行
2014-10-14 12:34
846 查看
转载自:点击打开链接
1.如何在DOS下运行VC编辑器?
2.main函数中的参数意义
3.main函数返回值的意义
最后是我自己添加的测试程序:
Cute1
大多数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 新建一个C++文档add.cpp,输入如下代码:
#include <iostream>
int main()
{
// prompt user to enter two numbers
std::cout << "Enter two numbers:" << std::endl;
int v1, v2;
std::cin >> v1 >> v2;
std::cout << "The sum of " << v1 << " and " << v2
<< " is " << v1 + v2 << std::endl;
return 0;
}
int main()
{
cout << "\nC++ is Fun!!!\n";
return 0;
}
保存所有文档,关闭工程。
2 打开DOS命令提示符窗口,使当前目录为f:\LIB\add,然后输入CL add.cpp,回车,可以看到如下信息:
此时你可以发现目录f:\LIB\add\下已经生成了可执行文件add.exe,您可以在命令行环境下执行它,输入add并回车,结果如下:
如图2:
图2
Cute2
最后谈谈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,并且已经事先编译好了,这时如果用户键入:
f:\LIB\add\add 68
值68将会传递给argv[1]
当然取决于你怎么样来编写程序了,也许你的用户将可以输入如下指令:
f:\LIB\add\add 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 <iostream>
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;
}
另保文件为add1..cpp,关闭VC工程,在命令行下输入CL add1.cpp回车,这时生成了新的add1.exe程序,再在命令行输入add1 48.52 1205回车,你会看到如下运行结果:
图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;
}
另保文件为add2..cpp,然后再CL add2.cpp编译后输入指令add2
www.czvc.com回车后有:
图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;
}
另保文件为add3..cpp然后再CL add3.cpp编译后输入指令add3 "WWW.CZVC.COM, LOOMMAN NETWORKS" 18.52 "M"回车后有:
Cute3
修改返回值为-1。返回值-1通常作为程序运行失败的指示器。然而,我在win7系统下编译器并没有报告main函数运行失败。
******************************************************************************************************************************************************************************
测试程序:
#include <iostream>
#include <stdio.h>
using namespace std;
int main(int argc, char* argv[])
{
char ch;
FILE *fin1, *fin2, *fout;
fin1 = fopen(argv[1], "rb");
fin2 = fopen(argv[2], "rb");
fout = fopen(argv[3], "wb");
fprintf(fout, "data from "); fprintf(fout, argv[1]);
fprintf(fout, "\n");
while(fscanf(fin1, "%c", &ch) != EOF)
{
fprintf(fout, "%c", ch);
}
fprintf(fout, "\n");
fprintf(fout, "data from "); fprintf(fout, argv[2]);
fprintf(fout, "\n");
while(fscanf(fin2, "%c", &ch) != EOF)
{
fprintf(fout, "%c", ch);
}
fprintf(fout, "\n");
fclose(fin1);
fclose(fin2);
fclose(fout);
return 0;
}
[Primer C++]命令行运行VC编译器
解决三个问题:1.如何在DOS下运行VC编辑器?
2.main函数中的参数意义
3.main函数返回值的意义
最后是我自己添加的测试程序:
Cute1
大多数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 新建一个C++文档add.cpp,输入如下代码:
#include <iostream>
int main()
{
// prompt user to enter two numbers
std::cout << "Enter two numbers:" << std::endl;
int v1, v2;
std::cin >> v1 >> v2;
std::cout << "The sum of " << v1 << " and " << v2
<< " is " << v1 + v2 << std::endl;
return 0;
}
int main()
{
cout << "\nC++ is Fun!!!\n";
return 0;
}
保存所有文档,关闭工程。
2 打开DOS命令提示符窗口,使当前目录为f:\LIB\add,然后输入CL add.cpp,回车,可以看到如下信息:
此时你可以发现目录f:\LIB\add\下已经生成了可执行文件add.exe,您可以在命令行环境下执行它,输入add并回车,结果如下:
如图2:
图2
Cute2
最后谈谈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,并且已经事先编译好了,这时如果用户键入:
f:\LIB\add\add 68
值68将会传递给argv[1]
当然取决于你怎么样来编写程序了,也许你的用户将可以输入如下指令:
f:\LIB\add\add 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 <iostream>
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;
}
另保文件为add1..cpp,关闭VC工程,在命令行下输入CL add1.cpp回车,这时生成了新的add1.exe程序,再在命令行输入add1 48.52 1205回车,你会看到如下运行结果:
图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;
}
另保文件为add2..cpp,然后再CL add2.cpp编译后输入指令add2
www.czvc.com回车后有:
图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;
}
另保文件为add3..cpp然后再CL add3.cpp编译后输入指令add3 "WWW.CZVC.COM, LOOMMAN NETWORKS" 18.52 "M"回车后有:
Cute3
修改返回值为-1。返回值-1通常作为程序运行失败的指示器。然而,我在win7系统下编译器并没有报告main函数运行失败。
******************************************************************************************************************************************************************************
测试程序:
#include <iostream>
#include <stdio.h>
using namespace std;
int main(int argc, char* argv[])
{
char ch;
FILE *fin1, *fin2, *fout;
fin1 = fopen(argv[1], "rb");
fin2 = fopen(argv[2], "rb");
fout = fopen(argv[3], "wb");
fprintf(fout, "data from "); fprintf(fout, argv[1]);
fprintf(fout, "\n");
while(fscanf(fin1, "%c", &ch) != EOF)
{
fprintf(fout, "%c", ch);
}
fprintf(fout, "\n");
fprintf(fout, "data from "); fprintf(fout, argv[2]);
fprintf(fout, "\n");
while(fscanf(fin2, "%c", &ch) != EOF)
{
fprintf(fout, "%c", ch);
}
fprintf(fout, "\n");
fclose(fin1);
fclose(fin2);
fclose(fout);
return 0;
}
相关文章推荐
- java SE运行环境在windows下的配置和命令行方式编译与运行java程序
- java jdk安装 环境变量配置 cmd 命令行 编译java文件 运行.class文件 CLASSPATH配置
- .c/.cpp文件windows命令行下编译,运行.c/.cpp文件
- 运行命令行带 PowerShell & VS & QT 环境(windows下加载QT命令行编译环境-VS版)
- java jdk安装 环境变量配置 cmd 命令行 编译java文件 运行.class文件 CLASSPATH配置
- .c/.cpp文件windows命令行下编译,运行.c/.cpp文件
- windows命令行(或linux)下用gcc/g++编译多个c/cpp文件
- Java学习总结(一)—— >Java环境变量的配置,DOS窗口的带包编译,Jdk1.5的两个新特性(可变参数和增强的for循环)
- windows下安装NetBeans IDE & 配置C++编译环境
- windows 命令行下编译运行.class文件
- 【PE】Windows平台命令行中使用vcvarsall.bat配置编译环境
- ZeroMQ + jzmq Windows 编译和运行环境配置
- sublime配置c编译环境出现sublime不是内部或外部文件也不是可运行的程序解决办法
- 在windows命令行下编译*.java文件,并运行
- Jmeter在非GUI环境下传递参数(命令行&Jenkins配置)
- Subline text3 配置java程序编译运行在subline控制台环境和windows控制台
- [cocos2d-x 学习] Windows下环境配置&交叉编译到android平台
- [vim配置]windows下在vim中使用gcc/g++编译调试c/cpp文件
- centos shell基础 alias 变量单引号 双引号 history 错误重定向 2>&1 jobs 环境变量 .bash_history source配置文件 nohup & 后台运行 cut,sort,wc ,uniq ,tee ,tr ,split, paste cat> 2.txt <<EOF 通配符 glob模式 发邮件命令mail 2015-4-8 第十二节课
- 在linux 上编译生成windows上运行的exe程序,交叉编译环境的配置( 平台:gentoo linux)