定义全局函数、变量
定义全局函数、变量
定义全局函数
声明定义在一个头文件 inline
如一些很短的工具函数,创建目录,删除目录之类的
#include <string>
#include <filesystem>
namespace wwc{
void inline CreateDir(std::string path) {
std::string cmd = "mkdir -p " + path;
std::system(cmd.c_str());
}
// 这个函数是C++17标准用于生成目录的函数, 目录可递归生成, 且已经存在也不会报错,nice!!!
void inline CreateDir2(std::string path) {
std::filesystem::create_directories(path);
}
}
其实看看官方给的std::to_string(), create_directories等也是inline居多。 使用inline需要注意什么:
-
解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题
-
定义(实现)通常放在头文件中
-
函数体需要简单
-
它时对编译器的建议
声明,定义分离
函数在.h头文件中声明,.cpp中实现, 注意用#pragma once
或者宏避免头文件被重复定义, 但普通函数被定义在头文件中一定还是会出现:一个或多重定义的问题。(在头文件中实现成员函数, 也是被编译器自动生成为inline函数)
#ifndef MY_LOG_H
#define MY_LOG_H
...
#endif
定义全局变量
C++是不建议使用全局变量的哈,但有时候可能你就需要它呢, 如C++自己定义的INT_MAX(这个例子不对哈, 它用的是宏定义, 预处理阶段会被替换掉)。若是想注册一个全局的回调函数, 就需要定义一个全局的回调函数变量。 下面给一个使用案例
- Utils.h头文件声明
extern int g_localVar;
- .cpp源文件定义
#include "Utils.h"
extern int g_localVar = 3;
定义这里的extern可以省略,头文件的声明不能省
- 其他文件使用,修改
int add(int x)
{
return x + g_localVar;
}
extern int g_localVar;
int sub(int x)
{
g_localVar = 5;
return x - g_localVar;
}
注意包含Utis头文件也是一样的, include不就是把别处的头文件复制过来嘛
- 测试: 既然是全局变量, 那么这里修改了, 后面所有用到的地方都生效
// g_localVar = 3
std::cout << add(12) << std::endl;
// g_localVar = 5
std::cout << sub(10) << std::endl;
// g_localVar = 5
std::cout << add(12) << std::endl;
15
5
17
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构