zoukankan      html  css  js  c++  java
  • C++学习笔记(一):头文件和源文件

    说明:

    当一个源文件(a.cpp)要调用另一个源文件(b.cpp)定义的方法时,需要在a.cpp中写上这个方法的声明(只需要该方法的名称、返回值和参数,类似Java的接口);

    如果每次调用其他文件的方法时都写上相同的声明就会很麻烦,而且当b.cpp的定义修改时所有调用到该文件的声明都要修改,这样工作量太大且容易出错,所以出现了头文件,我们把所有的声明都存放到头文件中,需要使用到的时候使用宏命令“#include”包含进这个.cpp文件中即可;

    #include:只有一个功能:把它后面所写的那个文件的内容,完完整整地、一字不改地拷贝到当前的文件中来;

    而C++规定,定义只有一次,声明可以多次,导致头文件只能写声明,不能进行定义,如果头文件进行定义,被多个文件#include后,就会出现多个定义导致编译失败;

    头文件不会进行编译,只会通过#include被其他多个源文件包含,然后头文件中的内容作为源文件的一部分进行编译;

    需要注意的是,.h头文件不用写在编译器的命令之后,但它必须要在编译器找得到的地方、通常是和源文件位于同一个目录下;

    头文件的后缀名可用任意名称;

    预处理程序:

    预处理程序包含3种,分别是:宏定义、文件包含和条件编译。

    宏定义:

    宏定义使用“#define”后跟定义的字符串,宏定义的字符串会在编译时直接进行文本替换。

    1 #define PI 3.14159

    在程序中遇到的所有PI字符串都会被替换为3.14159。

    文件包含:

    文件包含有两种形式,其含义是讲制定的文件的内容拷贝到当前文件中。

    1 #include "filename"
    2 #include <filename>

    使用尖括号表示使用系统的文件,使用双引号表示在当前目录下进行查找(包含子目录),当然除了填写相对路径外还可以填写绝对路径。

    条件编译:

    1 #ifndef COMDEF_H
    2 #define COMDEF_H
    3 
    4 //头文件内容
    5 
    6 #endif

    使用上述宏命令可以使头文件的内容只被执行一次;

    要达到上面的目的还可以使用另一种方法:

    1 #pragma once

    注意:#ifndef需要避免同名的问题,但是该方法所有编译器都支持,而#pragma once可以避免命名的问题但是只有较新的编译器支持。

    extern:

    extern关键字指定当前的内容为声明;

    1 double up;//定义了up变量,并且赋值为0
    2 extern double up;//声明了外部的变量up,不会分配内存

    函数的声明extern关键词是可有可无的,因为函数本身不加修饰的话就是extern的;

    例外:

    const对象可以直接定义在头文件中;

    内联函数也可以直接定义在头文件中;

    类的定义放在头文件中,而类的函数成员的实现代码放在一个.cpp文件中;

  • 相关阅读:
    Windows7 如何添加excel,word到鼠标右键
    Java程序安装失败
    交换机
    Hbase
    Hive
    Hdoop
    PL/SQL连不上,报 ORA-12170:TNS 连接超时
    Error in invoking target 'mkldflags ntcontab.o nnfgt.o' of mkdefile '/u01/app/oracle/product/11.2.0
    用js 的for循环打印三角形,提取水仙花数,求本月多少天
    JS循环、数组与练习题
  • 原文地址:https://www.cnblogs.com/hammerc/p/3922135.html
Copyright © 2011-2022 走看看