定义全局函数、变量

分类: 365速发官网 📅 2025-08-21 13:04:00 👤 admin 👁️ 4889 ❤️ 74
定义全局函数、变量

定义全局函数、变量

定义全局函数

声明定义在一个头文件 inline

如一些很短的工具函数,创建目录,删除目录之类的

#include

#include

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

相关文章