下面随笔将给出C++多文件结构和预编译命令细节。

多文件结构和编译预处理命令

c++程序的一般组织结构

  一个工程可以划分多个源文件

  类声明文件(.h文件)

  类实现文件(.cpp文件)

  类的使用文件(main()所在.cpp文件)

  利用工程来组合各个文件

多文件工程举例

C++多文件结构和预编译命令_C++

 

 

 1 //文件1,类的定义,Point.h 2  3 class Point { //类的定义 4  5 public:          //外部接口 6  7        Point(int x = 0, int y = 0) : x(x), y(y) { count++; } 8  9        Point(const Point &p);10 11        ~Point() { count--; }12 13        int getX() const { return x; }14 15        int getY() const { return y; }16 17        static void showCount();          //静态函数成员18 19 private:         //私有数据成员20 21        int x, y;22 23        static int count; //静态数据成员24 25 };
 1 //文件2,类的实现,Point.cpp 2  3 #include "Point.h" 4  5 #include <iostream> 6  7 using namespace std; 8  9  10 11 int Point::count = 0;            //使用类名初始化静态数据成员12 13  14 15 Point::Point(const Point &p) : x(p.x), y(p.y) {16 17        count++;18 19 }20 21  22 23 void Point::showCount() {24 25        cout << "  Object count = " << count << endl;26 27 }
 1 //文件3,主函数,5_10.cpp 2  3 #include "Point.h" 4  5 #include <iostream> 6  7 using namespace std; 8  9  10 11 int main() {12 13        Point a(4, 5);      //定义对象a,其构造函数使count增114 15        cout <<"Point A: "<<a.getX()<<", "<<a.getY();16 17        Point::showCount();      //输出对象个数18 19        Point b(a);         //定义对象b,其构造函数回使count增120 21        cout <<"Point B: "<<b.getX()<<", "<<b.getY();22 23        Point::showCount();      //输出对象个数24 25        return 0;26 27 }

条件编译指令——#if 和 #endif

#if  常量表达式

 //当“ 常量表达式”非零时编译

     程序正文 

#endif

......

条件编译指令——#else

  #if   常量表达式

     //当“ 常量表达式”非零时编译

       程序正文1

#else

  //当“ 常量表达式”为零时编译

       程序正文2

#endif

条件编译指令——#elif

#if 常量表达式1

    程序正文1  //当“ 常量表达式1”非零时编译

#elif 常量表达式2

    程序正文2  //当“ 常量表达式2”非零时编译

#else

    程序正文3  //其他情况下编译

#endif

条件编译指令

#ifdef 标识符

    程序段1

#else

    程序段2

#endif