• 学习C++的一些问题总结


    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中删掉.

  • 相关阅读:
    一起来学Java注解(Annotation)
    Intellij IDEA在maven项目中添加外部Jar包运行
    Java反射Reflect的使用详解
    Java泛型使用的简单介绍
    聊一聊Java的枚举enum
    Java集合 HashSet的原理及常用方法
    对比分析HashMap、LinkedHashMap、TreeMap
    TreeMap原理实现及常用方法
    关于红黑树(R-B tree)原理,看这篇如何
    百度地图-中国地图
  • 原文地址:https://www.cnblogs.com/wangdaling/p/6221909.html
Copyright © 2020-2023  润新知