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. NTP时间服务器配置与解析

    NTP时间服务器配置与解析 Edit By ZhenXing_Yu 目 录 编译安装ntp server 2 修改ntp.conf配置文件 2 配置时间同步客户机 2 在服务端验证: 3 在客户端进行 ...

  2. js浮点数运算需要注意的问题

    最近在js运算浮点数时发现了一个问题.问题是这样的:js函数中处理两个浮点数的相加,为了防止出现0.1+0.2=0.30000000000000004的问题,两个数都先乘以10000后再相加,得到结果 ...

  3. 挺好看的CSS

    <?php header("content-type:text/html;charset=utf-8"); echo "<style>h1{ color ...

  4. Safari里使用JsonView

    这是第三方开发的一个Safari的jsonView,和chrome以及FF功能类似,现在已经更新到1.1版了. 传送门:https://github.com/rfletcher/safari-json ...

  5. EhCache 分布式缓存/缓存集群

    开发环境: System:Windows JavaEE Server:tomcat5.0.2.8.tomcat6 JavaSDK: jdk6+ IDE:eclipse.MyEclipse 6.6 开发 ...

  6. selenium python (六)定位一组对象

    checkbox源码: <html><head><meta http-equiv="content-type" content="text/ ...

  7. collect my database for test KCF tracker tools

    Path Button used to set dir where avi file saves, set path set video size and start record write to ...

  8. 【LeetCode】242 - Valid Anagram

    Given two strings s and t, write a function to determine if t is an anagram of s. For example,s = &q ...

  9. Chapter10:泛型算法

    泛型算法的基础是迭代器. 迭代器令算法不依赖于容器,但是算法依赖于元素类型的操作.也即:算法永远不会执行容器的操作. 那么,如果想向容器中添加元素或者执行其他的一些操作呢?标准库提供了插入迭代器来完成 ...

  10. 使用ncc分析代码

    1 ncc是一个编译器, 用于输出程序的一些调用信息等, 可以查看函数调用关系, 支持函数指针, 查看数据结构和代码. 可以用来分析和理解代码. “" ... with ncc, in le ...