c++学习笔记九

程序文件和预处理指令
   1 程序文件
      头文件:类型定义和其他用于程序中一个或多个源文件的代码 后缀名为:.h
      源文件:要编译成机器指令的代码  后缀名为:.cpp  .c  .cxx
  
       引入头文件 代码格式如下:
            #include<iostream>
    
      名称的作用域
      
      程序文件的连链接
            确定名称的链接属性
                    内部链接属性  可以在同一个转换单元的任何地方访问
                    外部链接属性  同上,还可以在别外一个转换单元中访问
                    没有链接属性  只能在该名称的作用域中访问
      外部名称 
             如果想访问当前转换单元外部的变量,代码如下:extern 类型 变量名
             迫使const变量具有外部链接属性
                 例如:fun1.cpp 有如下定义 const int num1=100;
                                           const int num2=200;
                       fun2.cpp 就不能访问以上变量
                       如想访部就必需用extern重写这两个属性
                                           extern const int num1=100;
                                           extern const int num2=200;
                       这样fun2.cpp就可以通过如下代码进行访问
                                            xtern const int num1;
extern const int num2
     2 命名空间
         代码格式如下:using namespace std;
           全局命名空间
           定义命名空间 (main应放在所有命名空间的外部)
              代码如下:
                       namespace myRegion{
//content
}
           使用using声明命名空间 using namespace::identifier
           函数和命名空间
               代码如下(以下文件可以放在头文件中 temp.h):
                       namespace test{
                                       double max(const int x,const int y);
double min(const int x,const int y)
                                      }
                使用时需要将头文件引入: #include "temp.h"
          函数模板和命名空间
            可在命名空间中定义函数模板
               例如:
                  namespace compare{
template<class T>T max(const T * data,int size){
T result=data[0];
for(int i=0;i<size;i++){
if(result<data[i]){
result=data[i];
}
}
return result;
}               
                     }
           扩展命名空间
               例如:
                   namespace compare{
                   
                      }
                   namespace compare{
                   
                      }
                第二个模板为第一个模析的扩充
            未指定名称的命名空间 
                    namespace{}
            命名空间的别名
                    namespace 别名=原来的命名空间名称
           嵌套的命名空间
                    namespace temp1{
                      namespace temp2{}
                     }
       3 预处理器  是编译器的一个组成部分,是在.cpp源文件编译成机器码之前执



           指令                             功能
        #incluce                       支持包含头文件
       ===========================================================
        #if                            允许条件编译
        #else                          同上配对
        #elif                          #else #if
        #endif                         标记#if指令结束
        #if defined(#ifdef)             如果定义了一个符号,就执行操作
        #if ! defined(#ifndef)         如果没有定义一个符号就执行
        ==============================================================
        #define                        定义一个符号
        #undef                         删除一个符号
        ===========================================================
        #line                          重新定义当前行号和文件名
        ============================================================
        #error                         输出编译错误消息,停止编译
        ============================================================
        #programe                      提供机器专用的特性,同时保证与c++的完


全兼容  
        程序中的置换   #define PI=3.1415926 (不支持类型检查,不考虑作用域,


符号名不能限制在一个命名空间中)
        从程序中删除标志  #define PI (不给初值)
        取消宏名定义 #undef PI
        宏置换 #define Print(var) cout<<(var)<<endl
        放在多行中的预处理器指令 
               示例代码: #define PI=(x*y)\
                                           (x/y)
        把字符串作为宏参数 #define MYSTR "this is a string"
        在宏表达式中连接参数#define join(a,b) ab 或者是  #define join(a,b) 


a##b
        逻辑预处理器指令
              逻辑#if指令 使用方式有两种:一种是测试一个符号是否用#define定


义过
                                         另一种是测试某个常量表达式是否为真
               示例代码头: #if
                           #endif 
               测试特定的指令: #if CPU==PENTIUM4
                               #endif
               多个代码块选择:#if 
                              #else
                              #endif
               标准的预处理器宏:
===========================================================================


=          宏名    |                    说明
===========================================================================


=
   _LINE_        |   当前源文件中的代码行号 十进制
===========================================================================


=
   _FILE_        |   源文件的名称
===========================================================================


=
   _DATA_        |   源文件的处理日期
===========================================================================


=
   _TIME_        |   源文件的编译时间
===========================================================================


=
  _STDC_         |   如果编译器选项设置为编译标准的c代码,就定义他否则不定义
===========================================================================
  _cplusplus     |
===========================================================================


=


      #error和#pragma指令
        #error一般是在某个测试条件后执行
        #pragma实现预定义好的选项
   


       4 调试方法
             集成调试器功能:
                   跟踪程序流
                   设置断点
                   设置观察窗口
                   检查程序元素
             调试中的预处理指令
             使用assert宏:在头文件<cassert>中定义         
             关闭断言机制    在程序的开始定义#define NDEBUG  

转载于:https://www.cnblogs.com/retacn-yue/archive/2012/09/20/2761237.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SIP for android

SIP for android 会话发起协议 Android提供了一个支持会话发起协议&#xff08;SIP&#xff09;的API&#xff0c;这可以让你添加基于SIP的网络电话功能到你的应用程序。Android包括一个完整的 SIP协议栈和集成的呼叫管理服务&#xff0c;让应用轻松无需管理会话和传输层的沟…

饿了么翻车,美团被质疑,马云也赔了40亿,这项技术为什么让人害怕?

全世界只有3.14 % 的人关注了爆炸吧知识人类还没用力AI可能就倒下了8日&#xff0c;一篇《外卖骑手&#xff0c;困在系统里》的文章刷爆了朋友圈。看过的人多半都不好受&#xff0c;除了作为社畜感叹生活不易外&#xff0c;就是感叹外卖系统的AI算法对人类的裹挟是那么的残酷。…

如何强制 .NET 程序以 管理员模式 运行 ?

咨询区 Gold&#xff1a;我有一个 winform 程序部署客户的PC机上&#xff0c;请问我如何通过编码的形式强制让程序以管理员模式运行&#xff1f;回答区 Gaspa79&#xff1a;如果你用的是 Visual Studio 2019&#xff0c;可以通过工具去配置&#xff0c;右键 项目 -> 新建项 …

bitmap 转byte[]后读取_闲谈redis的bitmap

bitmap的原理bitmap就是通过最小的单位bit(8bit 1b 0.001kb)来进行0或者1的设置&#xff0c;表示某个元素对应的值或者状态。一个bit的值&#xff0c;或者是0&#xff0c;或者是1&#xff1b;也就是说一个bit能存储的最多信息是2。优点基于最小的单位bit进行存储&#xff0c;…

序1--年轻正当时(特权)

序1 年轻正当时 这本所谓的书&#xff0c;恐怕不一定能够带还没入门的U杀进FPGA开发的大门&#xff0c;当然也肯定不能达到进阶的目的。但是&#xff0c;姑且应了Bingo老弟所谓的对“图像的直觉”&#xff0c;确实图文并茂的从某一个山寨面把FPGA开发赤裸裸的展现给了大家。 被…

ecshop在首页调用dedecms文章

ecshop的文章功能实在是太过于简单了&#xff0c;所以我们为了丰富网站的内容&#xff0c;一般会集成DEDECMS来添加一些资讯文章&#xff0c;主要是DEDECMS文章处理相当强大&#xff0c;便于二次开发&#xff0c;下面通过两大步骤实现ecshop在首页调用dedecms文章&#xff1a;一…

Windows 11 dapr 环境安装

安装其实很简单按照dapr官网操作步骤其实没什么大问题的,不过在没有好的网络访问github的情况下真是有点揪心啦&#xff01;推荐使用 工具 fastgithub 访问githubFast&#xff1a;Github让Github畅通无阻windows 11 下的安装方式1.安装dapr cli 直接到Releases dapr/cli GitH…

eclipse 运行MapReduce程序错误异常汇总(解决Map not fount)

错误一&#xff1a; Error: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class wordCount.wordCount$Map not foundat org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2074)at org.apache.hadoop.mapreduce.task.JobContextImpl.getMa…

日本原装进口雪平锅,煎炸炒煮全搞定,日本人用了 1000 年

▲ 点击查看小爆我虽然热爱烹饪&#xff0c;但不得不说「下厨房」&#xff0c;也是个坑。光是锅&#xff0c;我就要买好几个。为了蒸包子馒头买蒸锅&#xff0c;为了炒菜买炒锅&#xff0c;偶尔想精致喝热牛奶又买了小奶锅&#xff0c;为了煲汤、做点卤味解解馋&#xff0c;买炖…

Android开发学习笔记:浅谈Content Provider

一.Content Provider的概念介绍 Content Providers是所有应用程序之间数据存储和检索的桥梁&#xff0c;它使得各个应用程序之间实现数据共享。是应用程序间共享数据的唯一途径。Content Provider 主要的功能就是存储并检索数据以及向其他应用程序提供访问数据的接口。其中包括…

小米3g刷高格固件_小米路由器3G刷了老毛子之后恢复官方固件

这个教程我没有亲自试过,看到了只是为了保存记录一下,方便自己日后用!1、断电路由器后&#xff0c;按住Reset恢复出厂设置5秒&#xff0c;接入电源&#xff0c;灯闪烁三下后松开。浏览器输入192.168.1.1即可进入breed 控制台&#xff01;2、固件更新-Bootloader-选择Bootloader…

VS2010插件之NuGet

Visual Studio&#xff08;简写VS&#xff09;是.net程序员开发必不可少的开发工具&#xff0c;随着VS的版本不断的升级和使用用户的扩大&#xff0c;现在针对VS开发了许多的开源免费的插件&#xff0c;大大的方便了程序员的开发&#xff0c;提高了开发效率。今天&#xff0c;我…

C# WPF Caliburn.Micro框架下利用Mef加载其它项目界面

01—前言MEF是微软自家的托管可扩展框架&#xff0c;在这里我把它用成了ioc容器。在Caliburn.Micro框架下&#xff0c;view和viewmodel被注入到CompositionContainer容器中&#xff0c;然后通过名称可以实现view和viewmodel的匹配。利用这一特点&#xff0c;在多人合作项目开发…

thinkpade450装内存条_thinkpad e450可以加内存条吗

展开全部结论&#xff1a;肯定是可以加的。原因62616964757a686964616fe59b9ee7ad9431333361313362&#xff1a;thinkpad e450自带两个内存插槽&#xff0c;最高可扩展至16G内存&#xff0c;也就是插两根8G内存条&#xff0c;这款笔记本增加内存的话&#xff0c;建议插两根4G的…

女朋友竟然提出这种奇怪的要求......

1 为什么女朋友会提这么奇怪的要求&#xff1f;▼2 我的数学能力▼3 一看就是老龙人了阁下是古墓派传人吧▼4 如果可爱能晋级的话你已经赢了▼5 要做个与众不同的垃圾▼6 女孩子喜欢帅哥是不分年龄的▼‍‍7 单身狗又做错了什么呢&#xff1f;▼扫描这个二维码你将会有机…

java内存:堆、栈、常量池、方法区

java中内存主要包含4块&#xff0c;即heap(堆内存)、stack(栈内存)、data segment(静态变量或是常量存放区)、codesegment(方法区). 参考&#xff1a; http://jameszhao1987.iteye.com/blog/1320630转载于:https://www.cnblogs.com/zhouqg/p/4758422.html

Java编码规范,在您进行编码之前应该阅读的规范

为什么80%的码农都做不了架构师&#xff1f;>>> 本文转载于&#xff1a;http://www.web3d.com.cn/new/teach/java3d/2006/11/13/363276161.html Java编码规范 说明 1.1 为什么要有编码规范 编码规范对于程序员而言尤为重要&#xff0c;有以下几个原因&#xff1a; …

ensp查看历史配置命令_华为eNSP常用命令

开启DHCP功能[R1-GigabitEthernet0/0/2]dhcp select interface开启接口的DHCP服务功能[R1-GigabitEthernet0/0/2]dhcp server lease day 2配置IP地址租用有效期限为2天,默认为1天,超过租期后该地址将会重新分配[R1-GigabitEthernet0/0/2]dhcp server excluded-ip-address 192.1…

.NET Core 如何调试 CPU 爆高?

在这篇文章中我们将会分析一个 CPU 爆高的案例&#xff0c;测试demo链接 &#xff1a;https://docs.microsoft.com/en-us/samples/dotnet/samples/diagnostic-scenarios/ 。你将会学到&#xff1a;如何使用 dotnet-counters 确定真实的 cpu 使用率。使用 dotnet-trace 追踪代码…

[OIBH] 糖果盒(Candy Box)——又一个最大子矩形

http://codewaysky.sinaapp.com/problem.php?id1056 这题和奶牛浴场略有区别&#xff0c;奶牛浴场只需要求出最大子矩形&#xff0c;而这题要求的是最大权重子矩形&#xff0c;不一定要最大的面积&#xff0c;但要最大的权重和 思路是先求出每个最大子矩形&#xff0c;然后求出…