第七节 声明与定义

1. C++编译过程

 

 

2. 声明与定义

 通过编译的过程,可以看到,无论是变量还是函数,都有一个专门对应的符号表,而符号表中的内容只是保存了内存地址。

在C++中,向符号表中添加一行的行为,称为声明,在内容给出具体内容的行为,称为定义。

无论在定义任何内容前,都需要先进行声明。在程序设计时,可以仅给出声明部分,而实际运行时则必须给出定义部分。

复制代码
#include <iostream>
#include <string>

using namespace std;


// 变量的声明与定义
extern int a;
int a;
int b = 5; // 变量的声明定义,同时赋值

// 函数的声明与定义
int Add(int, int);
int Add(int a, int b) {

}

// 只有当函数或者变量,与当前调用者不在同一个cpp文件时,才需要手动写出声明
struct Book;
void PrintBookInfo();

int main() {
    // 在编写代码时,可以先不给出函数的具体定义
    // 但是在编译时,必须给出函数定义
    PrintBookInfo();
    return 0;
}
复制代码

 

复制代码
// Calculator.h

int Add();
int Multi();

// main.cpp
// "" 表示从当前项目文件夹查找头文件
// <> 表示从系统文件夹查找头文件
#include "Calculator.h"

int main() {
    Add();
    return 0;
}
复制代码

 

3.预编译指令

 

复制代码
#pragma once
#include <iostream>
#define ADD(a, b) a + b

#define SYS_WIN

using namespace std;

int main() {
    cout << 2 * ADD(3,5) << endl;

#ifdef SYS_WIN
    cout << "Windows" << endl;
#elif SYS_MAC
    cout << "MAC" << endl;
#else
    cout << "OTHERS" << endl;
#endif

    return 0;
}
复制代码

 

4. 练习

 

// 利用宏定义,定义常用的数学常量
// π,e,g
// 利用宏定义,定义速率计算式 v=s/t

#define PI 3.14
#define E 2.7
#define G 9.8
#define V(s, t) s / t //s,t是什么数据类型?
复制代码
// 创建StringHelper.h 文件
// 给出下列函数的声明
// 1. 计算字符串长度的函数
// 2. 拼接两个字符串的函数
// 3. 将字符串所有字母大写(或小写)的函数,注意:这是一个函数
// 4. 打印字符串的函数
// 创建StringHelper.cpp文件,实现打印字符串函数的定义
// 在main.cpp中,使用自定义的打印字符串函数,输出“Hello,World”


// StringHelper.h
#pragma once
#include <string>
using namespace std;
int Length(string );
string Append(string, string);
string UpperOrDown(string, isUpper);
void Print(string);

// StringHelper.cpp
#pragma once
#include <string>
#include <iostream>
#include "StringHelper.h"
using namespace std;

void Print(string s)
{
    cout << s << endl;
}

//main.cpp
#include <string>
#include <iostream>
#include "StringHelper.h"
#include "StringHelper.cpp"

int main()
{
    Print("Hello, World");
    return 0;
}
复制代码

 

5. 作业

 创建处理汽车信息的头文件和源文件,并给出:

1. 汽车结构体的声明与定义

2. 创建一个汽车结构体实例的CreateCar函数的声明与定义

3. 打印一个汽车结构体实例的PrintCarInfo函数的声明与定义

在main函数中,完成:

1. 创建一个汽车结构体实例

2. 打印一个汽车结构体实例

 

了解下列C++标准库文件的作用

iostream, fstream

string, numeric, compex

posted @   庞兴庆  阅读(152)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2020-10-22 第三节 函数
点击右上角即可分享
微信分享提示