vc文件编译顺序
1. 我在考试 求助:vc++中如何建立、编译和运行包含多个文件的程序,写出步骤
兔子好,我是zkill^_^
*建立和运行包含多个文件的程序的方法*/
情形:一个程序包含多个源程序文件,则需要建立一个项目文件(project file),在这个项目文件中包含多个文件(源文件和头文件)。项目文件是放在项目工作区中的,因此还要建立项目工作区。在编译时,系统会分别对项目文件中的每个文件进行编译,然后将所得到的目标文件连接成为一个整体,再与系统的有关资源连接,生成一个可执行文件,最后执行这个文件。
实际操作时有两种方法:(1)由用户建立项目工作区和项目文件;(2)用户只建立项目文件而不建立项目工作区,由系统自动建立项目工作区。
1.由用户建立项目工作区和项目文件
1.1将同一程序中的各个源程序文件,存放在指定目录(最好是一个,好找)下:如将file1.c file2.c file3.c file4.c保存在D:\CC子目录下。
1.2建立一个项目工作区。File|New|Workspaces : Workspace name -> ws1 Location -> D:\CC(或其他目录)|OK
1.3建立项目文件。File|New|Project -> Win32 Console Application : Project name -> project1 Location: D:\CC\WS1\project1|OK(选中Add to current workspace) -> An empty project
1.4将源程序文件放到项目文件中。Project|Add To Project|Files -> Insert Files into Project : 选中File1.c File2.c File3.c File4.c -> OK
1.5编译和连接项目文件: Build|Build project1.exe
1.6执行可执行文件: Build|Execute project1.exe ———————————————————OVER
参考下吧不一定对
2. VC6.0的编译方向是从左到右吗
难道int还变成了tni了机器就能识别这是关键字了吗? 总体来说是从左边到右边,但是特殊的比如运算符‘=’ ,,,,
3. 怎样用vc编译c语言文件,请详细说明步骤
如果只是想简单用VC编译c语言文件,可以不用那么复杂,你可以这样做:
在你想保存的文件夹下,新建一个.txt的文本文件,名字就取你要新建立的c文件的名字,但是注意后缀名改为.c;
让后右键(如果只装了vc的话,也可以直接双击打开)选择vc方式打开;
在打开的窗口中编写你的代码,写完后保存,点击!符号(也可以找菜单项中的build下的build all或execute都可以),进行编译和链接,弹出对话框就选择是,如果没有错误就可以通过编译,程序就直接运行
如果是按步骤来会稍微麻烦点,如下:
(1)打开vc环境
(2)选择“File”—“New”
在弹出的对话框中选择"projects"项,先建立工程文件:
i:对话框的左边选择Win32 console Application项
ii:在对话框的右边可以选择路径Location和输入工程名Project name,下边的单选一般默认为Create new workspace即可(因为是新建)
iii:以上设置好后,单击ok,下面的对话框按默认即可,点击finish,然后在下一个对话框中点击ok,工程建所在文件夹就建好了。此时如果按你刚才设定的路径去查看,就可以找到建立的工程文件夹。
(3)建立文件
让后同样在“File”—“New”下,本次选择Files项,在左边选择c++source file项,右边file下可以输入文件名,上边的为指定该文件所在的工程,一般默认即可建立在你刚刚建立的工程文件中,下边的Location为该源文件的路径,都按要求填写好后,点击ok即可进行文件的代码的编写了
(4)代码写好后,如上一部分简单操作时所说的进行编译和链接,让后运行就可以查看结果了。
至于工程是做什么用的,就好比是一个“单位或者说工厂”一样,而源文件好比是单位中的“车间”,这样理解简单点,具体的过程你按我所说的试试吧
附:如果你的英文好的话,很容易理解和看懂出现的各种提示的意思,如果你装的是汉化版的vc,那就更好办了,很容易就看懂的,试试看,祝你成功!
刚开始学习c语言,用的也是vc环境,更本不知道从哪里进入,哪里写代码,所以想了上面的简单的办法,后来看书就慢慢的会用了,相信你很快就会很熟练了,呵呵
4. 如果一个工程中有多个C++源文件,怎么确定先编译哪个源文件呢
授人以鱼,不如授人以渔.建议楼主好好看看<<C++ primer>>这本书,目前有中文第四版,我非常喜欢它,我也是去年十月份开始学习C++的,看完它再看<<effective C++>>和<<more effective C++>> , 尤其是<<effective C++>>,简直是C++的圣经,非看不可...最后到高级了.你还可以看看<<深入探索C++对象模型>>...我全看完了,感觉受益匪浅.
好了,下面开始解答问题:
解答问题之前,复习一下基本概念;
1:C++中的全局变量,在整个程序中只能定义一次,但可以声明多次(不限次数); 在一个地方定义,,然后在其他地方使用时,要先声明一下;
2:什么叫变量定义? 比如 int i; 这就是定义;
而 extern int i; 则 只是声明;
但如果写作 extern int i = 0; 则这也是定义,不是声明;(是不是有点绕??熟悉了就很简单了)
所以,我觉得你的问题.实际上是源自你对C++语法中变量的定义和声明这两个概念的模糊;
你说你在a.cpp 中声明 i, 而在b.cpp中必须用extern 声明才可通过编译,这是正常的..因为你的i是在a.cpp中定义的..
你说你在b.cpp中声明i, a.cpp中是否使用extern都可以通过编译,这个问题嘛.我估计你的代码实际上仍然是在a.cpp中定义了i,而b.cpp中定义的i不是全局的.
至于你说如果有多个源文件.那么编译顺序如何确定.这个问题很难回答你,恐怕不同的编译器对此的处理都不大相同..我觉得你不应该考虑这个问题..实际上编译器会把不同的源文件分别、单独地编译成独立的模块,最后再链接成一个可执行程序,因为它们都是独立编译的模块,理论上说.编译顺序是不重要的.
我觉得倒是应该告诉你如何正确地管理和使用全局变量;
首先,建立一个 "global.h"(文件名随你,我这里举个例子而已,记得在头文件里加上头文件保护符哦!如果你告诉我你不知道什么是头文件保护符,我强烈建议你不要再往下看了..立刻去买一本C++primer吧);
在global.h文件中.声明你所需要的所有全局变量,以下是 global.h的内容:
#ifndef GLOBAL_H
#define GLOBAL_H
extern int g_i; // 此处是声明,另外,在全局变量前加一个 g_ 是好习惯.
#endif
然后新建一个 global.cpp文件,包含 global.h文件,接着,定义所有的全局变量,
以下是global.cpp的内容:
#include "global.h"
int g_i = 1982; // 此处是定义!!!
至此,一切搞定,最后,在你需要用到全局变量的cpp文件中包含 global.h吧...比如你的a.cpp和b.cpp; 编译顺利了吧?
/////////////////////////////////////////////
看到楼主的新问题了..我再补充回答一下.
问题1:我的疑问是,如果在my.cpp中定义了theApp,则必须在mfc.cpp中用extern声明theApp,否则编译出错;但是如果在mfc.cpp中定义theApp,则不必在my.cpp中声明,编译也能够通过,这是为什么呢?
我的回答: 这个问题还是声明和定义的问题.我之前说过了.一个变量(比如你的这个theApp),在整个程序中只能定义一次, 然后在需要使用它的地方,要先声明后使用.
因此,看看实际情况:你在my.cpp中定义了theApp,当你在mfc.cpp中要使用它,当然要先声明它咯,而声明变量必须加上extern,不然就变成定义了,那么就会导致你在my.cpp和mfc.cpp中定义同名全局变量两次,自然就无法通过编译.
而如果你在mfc.cpp中定义theApp的话,因为在my.cpp中没有直接用到 theApp.所以,就不需要声明了.这下清楚了吧?呵呵.
还有,补充一个基础知识,,我们通常写 int i; 这样的语句是"定义","定义"实际上就起到了"声明"的作用; 所以,如果你不是定义变量,而是单纯要声明一个外部的全局变量(也就是其他cpp文件里的全局变量)的时候,是肯定要加extern的.
我觉得楼主是对 与要加extern感到诧异.
问题2:
这个程序我运行的结果是只有构造函数的那些输出语句执行了,而析构函数的那些输出语句并没有执行,这又是为什么呢?
这个讲起来有点多.涉及到一个C++程序的启动过程:我简单地说说,
以windows为例,点击一个exe程序后,系统创建一个"进程内核对象",创建4G虚拟内存空间以及其他的一些执行程序需要的资源,然后创建"线程内核对象",启动一个线程(也就是主线程了),这个线程调用一个 C++ startup函数,该函数会初始化 你的程序中的所有全局变量,( 这个时候你就看到你 theApp的那些基类的构造函数的执行,并打印出来),所有全局变量构造好以后,才开始执行你写的main函数.
然后,你的main函数 return了.这时,执行一个C++执行期函数exit(),析构你的所有全局变量(也就是theApp), 但这个时候你的console窗口已经退出了.所以你看不到那些析构函数执行时的打印信息了.呵呵.
另外:我真的非常推荐楼主先好好看看<<C++ primer>>和<<effective C++>>这两本书,不要把<<深入浅出mfc>>当成C++教材来看,虽然这本书很好,并且通过mfc,很好地示范了C++ 继承,虚函数的妙用.但是,<深入浅出mfc>的作者侯捷说的好:勿于浮沙筑高台.. 基础打牢非常关键. 当你把C++的基础知识搞清以后,再看深入浅出 mfc 其实是很简单的..
5. vc2010怎么进行c语言编译
1,在windows桌面中Visual Studio打开软件并新建项目。
6. (VC6.0)1.输入源程序后,如何编译该程序 2.如何链接程序生成可执行文件 3.如何运行程
1单击主菜单栏中的build编译
2在得到后缀为obj的目标程序后选择build菜单下的build选项,表示要求连接并建立一个可执行文件。
3得到可执行文件后选择build菜单下!execute文件名.exe,执行文件。
7. 用VS2010怎么编译,调试,运行Vc++文件
vc++就可以。
你下载一个qt-vs-addin-1.1.9.exe,这个支持vs2010,可以直接在里面建立qt的项目。我用的是这个版本,qt是qt-everywhere-opensource-src-4.7.3.zip,操作系统是xp。
8. 在C语言中,完成C源文件编辑后到生成执行文件的步骤是什么
编译链接,期间查找错误并更正,重复编译链接过程,知道修改正确。然后得到可执行文件。