免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8902 | 回复: 13
打印 上一主题 下一主题

[C++] 在VS2010的C++模块的同一项目文件中,如何在编译main函数之后顺序编译其余cpp文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-18 15:14 |只看该作者 |倒序浏览
在VS2010中的C++模块,我写了如下程序(简单还原):
第一步:    设定constant.cpp文件,用来定义一些全局变量和自定义函数;
第二步:    设定headline.h文件,用来声明在constant.cpp中定义的全局变量和自定义函数,同时定义了一些宏(类如PI);
第三步:    设定main.cpp文件,作为整个项目的主函数——int main();
第四步:    设定initial.cpp文件,作为整个项目的次函数1——void main();
第五步:    设定force.cpp文件,作为整个项目的次函数2——void force();
第六步:    设定integrate.cpp文件,作为整个项目的次函数3——void integrate();
备注:在main.cpp、initial.cpp、orce.cpp、ntegrate.cpp等四个源文件中同时include "headline.h",经过编译,发现程序进入main()主函数之后,并没有编译initial、force和integrate等次函数;问了同学,得知需要为initial.cpp、force.cpp和integrate.cpp文件分别设置相应的头文件,于是我照做了:
第七步:    设定initial.h文件:
                                                      #pragma once
                                                      void initial();
第八步:    设定force.h文件:
                                                     #pragma once
                                                     void force();
第九步:    设定integrate.h文件:
                                                    #pragma once
                                                    void integrate();
备注:经过第七、八、九步的设定,再经过编译,发现程序进入main()主函数之后,仍然没有编译initial、force和integrate等次函数,不知道怎么解决这个问题——也就是同一项目文件下,如何在编译main函数之后,顺序编译其余cpp文件;

这个就是我的项目文件

这个是我设定的initial.h文件,而force.h和integrate.h都是这样做的。
请懂这些的高人帮我解答一下疑惑,楼主在此就先谢谢各位了!!!

论坛徽章:
0
2 [报告]
发表于 2014-03-19 08:41 |只看该作者
怎么没有人给我解答一下吗?都好几天了,这个问题一直都没有解决啊!

论坛徽章:
9
摩羯座
日期:2013-08-15 15:18:48狮子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龙
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亚洲杯之韩国
日期:2015-03-26 10:16:442015亚冠之武里南联
日期:2015-08-18 14:55:52
3 [报告]
发表于 2014-03-19 09:03 |只看该作者
编译顺序对结果并没有影响,要考虑编译顺序毛用?
你说,“发现程序进入main()主函数之后,并没有编译initial、force和integrate等次函数”,你又是怎么发现的?
还有一个int main,另外又有一个void main,难道没有链接错误?
总之你问的问题其本身就是一个大问题,你不先把自己的问题解决了,别人也没法帮你解决问题。

论坛徽章:
0
4 [报告]
发表于 2014-03-19 09:21 |只看该作者
回复 3# w_anthony

我的问题主要是,在同一个项目(Program AuNP-DNA)下,编写了四个源文件(main.cpp、initial.cpp、force.cpp和integrate.cpp),分别对应着四个函数(int main()、void initial()、void force()和void integrate()),为了检查程序的编译情况,我在main.cpp、initial.cpp、force.cpp和integrate.cpp文件的头一句分别写了一个输出语句(例如printf("This location is dangerous !!!\n",可是编译的时候,只输出了main.cpp中的printf语句,而其余cpp文件中的printf语句根本就没有输出,显然程序就没有被完全编译,现在主要是问这个问题如何解决。
   

论坛徽章:
9
摩羯座
日期:2013-08-15 15:18:48狮子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龙
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亚洲杯之韩国
日期:2015-03-26 10:16:442015亚冠之武里南联
日期:2015-08-18 14:55:52
5 [报告]
发表于 2014-03-19 10:08 |只看该作者

编译和执行能是一个意思吗?

论坛徽章:
0
6 [报告]
发表于 2014-03-20 08:36 |只看该作者
回复 5# w_anthony

亲,能否说得直白些,这个问题到底应该如何解决呢?我是菜鸟级,还望多多帮忙,谢谢!!!
   

论坛徽章:
9
摩羯座
日期:2013-08-15 15:18:48狮子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龙
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亚洲杯之韩国
日期:2015-03-26 10:16:442015亚冠之武里南联
日期:2015-08-18 14:55:52
7 [报告]
发表于 2014-03-20 13:26 |只看该作者
C/C++中程序的入口是main函数,其他函数如果没有被main直接或者间接的调用到,即使编译进去了也不会执行。既然不会执行,又怎么会打印出信息呢?
所以从根本上说,你的需求就是一个伪命题,是不可能解决的。

论坛徽章:
9
摩羯座
日期:2013-08-15 15:18:48狮子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龙
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亚洲杯之韩国
日期:2015-03-26 10:16:442015亚冠之武里南联
日期:2015-08-18 14:55:52
8 [报告]
发表于 2014-03-20 13:33 |只看该作者
如果你换一个问法,如何才能让在不同的CPP中的几个函数都能够被执行到,那么可以回答在main里面找个地方调用那些在其他CPP中定义的函数(当然main之前需要声明)就行了。
但是你现在这个问题,根本就是伪命题,就像问“为什么我每天跟女朋友ML,她都不会怀孕啊?难道跟她容易漏气有关吗?怎样才能让她怀孕啊?”一样,根本没问到“点”上。

论坛徽章:
0
9 [报告]
发表于 2014-03-20 15:22 |只看该作者
回复 8# w_anthony

好吧{:3_196:} 算我没问到点子上,不过还是多谢你的点评,问题已经解决了。
   

论坛徽章:
0
10 [报告]
发表于 2014-03-20 15:23 |只看该作者
回复 7# w_anthony
        我自己编写的main.cpp源文件如下:
int main()
{
        ……………………………………
        void initial();
        for(t=0;t<=T_MAX;t=t+DELTAT)
        {
                void force();
                void integrate();
        }
        ……………………………………
}
        由于main()函数中需要调用initial.cpp、force.cpp和integrate.cpp源文件中相应的initial()、force()、integrate()函数,由于我的函数类型均定义为void类型,所以在编译main()函数时,程序没有编译void initial()、void force()、void integrate()这三个语句;
        我修改之后的main.cpp源文件如下:
int main()
{
        ……………………………………
        initial();
        for(t=0;t<=T_MAX;t=t+DELTAT)
        {
                force();
                integrate();
        }
        ……………………………………
}
        如果我将这三个语句之前的函数类型void去掉的话,程序就不会出现不编译的情况了。问题已经解决了,谢谢大家!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP