C++ 问题

(一)

int main()

{

int i,j,m,n;

i=8;

j=10;

m=++i+j++;  //++i是先递加再使用,j++是先使用再递加,故:9+10=19

n=++i+(++i)+m; //对于(++i)在同一个表达式中同一变量有多次递加需全部递加完后再使用

cout<<i<<'\t'<<j<<'\t'<<m<<'\t'<<n;

return 0;

}

运行结果: 11  11  19  41

原因是++运算符的优先级更高,两次++运算后,i=11;

然后才是2个i来和m相加,22+19=41

int main()

{

int i,j,m,n;

i=8;

j=10;

m=++i+j++;

n=(i++)+(i++)+m;   //9+9+19=37

cout<<i<<'\t'<<j<<'\t'<<m<<'\t'<<n;

return 0;

}

运行结果:11  11   19  37

(二)

问:c++中在visual studio 2010中怎么实现模块化编程呢,比如一个大的程序划分为多个小的程序模块,由不同的人负责的时候,每个人在写自己部分程序的时候也必须要写主函数吗?,如果没有主函数,比如我负责写一个max函数部分,写完之后我想事先调试一下,如果没有主函数就无法编译咋办,一个程序不管多大最后应该都只有一个主函数吧!以前学函数调用时,我都是在一个程序文件里实现的,如果要先做单元,最后再集成在一起,那么单元部分的程序代码还是.cpp类型吗?

答:如果是小项目的话,写个简单的主函数调用,也就是将main和用户自定义函数(如max函数)分别单独写在两个.cpp中,再通过主函数来调用max

 

visual studio 2010中实现如下图所示:

大项目的话,一般用VSS(visual source safe),作为microsoft visual studio 的一名成员,它主要任务就是负责项目文件的管理,几乎可以适用任何软件项目

问:那么主函数和max函数只有放在一起才能编译,单独由不同的人写完就不能调试了吗?

答:你只是为调试写个主函数,验证调用的正确性,真正的主函数谁负责谁写

(三)

如何在Win 7 中用命令行编译visual studio 2010 中的c/c++源程序

昨天想要试着在控制台用cl.exe编译cpp文件,发现直接在VS2010(win 7系统)/VC/bin下用cl不行,首先是环境配置

几乎没有人会否认集成开发环境 (IDE)(例如,Visual Studio,NetBeans,Eclipse)所提供的能使编程工作变得相当简单的诸多功能。但,还是说说命令行编译的好处吧。
  1、偏爱最简单的生成
  2、希望揭开 IDE 处理源代码文件的方法的秘密
  3、深入了解计算机语言并得到扩展
  事实上,使用命令行工具编译的感觉将证明很有帮助。
  怎么打造Windows下的C/C++命令行编译环境呢?使用Cygwin在Windows上模拟Linux环境,然后利用gcc/g++,显然这也是复杂的折腾。既然我已经装了Visual Studio,那么我应该好好利用其cl编译器。OK,步骤记录如下(这里说明一下,我的环境是Windows 7 + Visual Studio 2010,其中VS 2010安装位置是C盘):
  1、修改环境变量
     在系统属性-高级-环境变量-用户变量中:
     新建或编辑PATH增加cl编译器的路径C:\Program Files\Microsoft Visual Studio 10.0\VC\bin   以及MSPDB100.DLL的路径C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE,用分号分隔。
     新建变量INCLUDE:C:\Program Files\Microsoft Visual Studio 10.0\VC\include
     新建变量LIB:C:\Program Files\Microsoft Visual Studio 10.0\VC\lib

2、在cmd中编译程序仍发现一些报错如下:

(1)提示少mspdb100.dll,于是跑到common7的IDE下把这个动态链接库拷到D:\Program Files\Microsoft Visual Studio 10.0\VC\bin中

(2)但在cmd中编译程序依然报错:无法打开SDKDDKVer.h,于是将C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include中的sdkddkver.h拷贝到了C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include  中

(3)依然报错:LINK:fatal error LNK 1104:无法打开文件“kernel32.lib”,于是把C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib中的kernel32.lib拷贝到C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin中

3、这下cl终于可以用了,

源代码编辑——编译(命令行界面在指定目录下输入:cl  -c  test.cpp  )生成 .obj目标文件——链接成 .exe 文件(cl test.cpp  -o  testl) -o后面可指定最终可执行文件名

注意:这里我的visual studio 2010 安装的完全路径:

C:\Program Files\Microsoft Visual Studio 10.0\VC\bin

编译程序除了需要编译器以外还需要提供:系统库文件.lib , 系统头文件

库文件:C:\Program Files\Microsoft Visual Studio 10.0\VC\lib

头文件:C:\Program Files\Microsoft Visual Studio 10.0\VC\include

fatal error C1902: 程序数据库管理器不匹配;请检查安装解决

虽然习惯了vc的图形debug,用cl很不爽,但事情不就是满足自己一时的兴趣么?
今早一来开个工程,发现居然编译不了,提示fatal error C1902: 程序数据库管理器不匹配;请检查安装解决。在网上搜了下,发现居然是哪个mspdb100.dll在作祟。
两个解决方法:
(1)到IDE下把msobj100.dll mspdbcore.dll  mspdbsrv.dll都拷过来;
(2)把mspdb100.dll从bin中删掉.

学习C++的一些问题总结的更多相关文章

  1. 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代

    2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...

  2. Angular2学习笔记(1)

    Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...

  3. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  4. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  5. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  6. Unity3d学习 制作地形

    这周学习了如何在unity中制作地形,就是在一个Terrain的对象上盖几座小山,在山底种几棵树,那就讲一下如何完成上述内容. 1.在新键得项目的游戏的Hierarchy目录中新键一个Terrain对 ...

  7. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

  8. 菜鸟Python学习笔记第一天:关于一些函数库的使用

    2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...

  9. 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)

    前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...

  10. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

随机推荐

  1. centos下安装xfce+vnc

    首先安装桌面环境,我选择的是xfce,轻量级桌面,小巧实用不占太多内存,(占用内存方面,xfce少于kde,kde少于gnome). 安装xfce桌面一开始我以为第三方的软件源如rpmforge等应该 ...

  2. 使用rsync+inotify+apache做分布式图片服务器的部署方法

    图片服务器一般是做成分布式的,但要使得所有的图片服务器的文件一致,可以由一个主服务器将文件推送到各个备份服务器上. rsync:文件差异检查及文件推送 inotify:事件触发,实时检测到添加.删除. ...

  3. 实用js+css多级树形展开效果导航菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. objective-C 中两种实现动画的方法

    第一种方法: [UIView beginAnimations:@"Curl"context:nil];//动画开始 [UIView setAnimationDuration:1.2 ...

  5. 【Android】不弹root请求框检测手机是否root

    由于项目需要root安装软件,并且希望在合适的时候引导用户去开启root安装,故需要检测手机是否root. 最基本的判断如下,直接运行一个底层命令.(参考https://github.com/Trin ...

  6. 二级缓存处理大数据 用ehcache.xml配置文件

    二级缓存大量数据的解决方案 数据很大 二级缓存 存储大数据,让 内存和磁盘文件进行交互,数据库中的不变的数据在磁盘上,这样就可以少和数据库进行交互了 ehcache.xml 放在src下 <eh ...

  7. HTTP协议的状态码

    对于Web编程人员来说,熟悉了解HTTP协议的状态码是很有必要的,很多时侯可能根据HTTP协议的状态码很快就能定位到错误信息!今天整理了一下所有HTTP状态码. HTTP状态码(HTTP Status ...

  8. 如何使用Fiddler调试线上JS代码

    大家平时肯定都用过火狐的Firebug或者谷歌的调试工具来调试JS,但遗憾的是我们不能像编辑html,css那样来直接新增或者删除JS代码. 虽然可以通过调试工具的控制台来动态执行JS代码,但有时候却 ...

  9. 二.JSP开发过程中遇到的问题及解决

    一.开发环境问题 问题一:Failed to load the JNI shared library 启动Eclipse时弹出“Failed to load the JNI shared librar ...

  10. Oracle 热备份batch脚本 Windows

    1.最初来源于网络. 2.根据环境和喜好自己修改. 3.实测是可以完成备份任务的. 4.不推荐用于实际环境. bak.bat:执行时执行此脚本,其他脚本是调用和生成或者生成之后再调用.(需要自己修改先 ...