C/C++语言宏定义使用实例详解

发布时间 - 2026-01-11 02:06:46    点击率:

 C/C++语言宏定义使用实例详解

1. #ifndef 防止头文件重定义

在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接成
一个可执行文件时,就会出现大量“重定义”的错误。在头文件中实用#ifndef #define #endif能避免头文件的重定义。

方法:例如要编写头文件test.h

在头文件开头写上两行:

#ifndef TEST_H
#define TEST_H //一般是文件名的大写

头文件结尾写上一行:

#endif

这样一个工程文件里同时包含两个test.h时,就不会出现重定义的错误了。

注:Visual C++中有一种简化的方法,那就是使用 #pragma once

2. 编写跨平台的C/C++程序

2.1 操作系统相关宏定义

Windows:  WIN32
 Linux:  linux
Solaris:  __sun

2.2 编译器相关宏定义

   VC: _MSC_VER
GCC/G++: __GNUC__
 SunCC: __SUNPRO_C 和 __SUNPRO_CC

3. 完整的代码实例

//Avoid redefine anything in this header 
#ifndef UUID_H
#define UUID_H

// Check platform is Windows or Linux
#ifdef _MSC_VER
#ifndef DLL_API
#define DLL_API __declspec(dllexport)
#endif
#else 
#ifndef DLL_API
#define DLL_API 
#endif 
#endif


#include <string>
#include <random>
#include <time.h>
#include <stdlib.h>

using namespace std;

class DLL_API UUID {
public:
  static string getUuidString();
};

#endif

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# C/C++语言宏定义  # C++  # 宏的使用方法详解  # C/C++宏定义的可变参数详细解析  # C++十六进制宏的用法详解  # 简单讲解C++的内部和外部函数以及宏的定义  # C/C++中宏定义(#define)  # C/C++ 宏详细解析  # 在C++中自定义宏的简单方法  # c++ 编程 几个有用的宏详解  # C++基础入门教程(二):数据、变量、宏等  # 浅析c++ 宏 #val 在unicode下的使用  # C/C++中宏/Macro的深入讲解  # 头文件  # 写上  # 就会  # 会有  # 多个  # 中有  # 希望能  # 软件工程  # 这样一个  # 谢谢大家  # 两行  # 可执行文件  # 那就是  # 操作系统  # color  # span  # style  # pragma  # Windows  # Visual 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: jQuery 常见小例汇总  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  如何快速搭建安全的FTP站点?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  公司门户网站制作流程,华为官网怎么做?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  Laravel如何处理和验证JSON类型的数据库字段  如何做网站制作流程,*游戏网站怎么搭建?  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  Laravel如何实现多对多模型关联?(Eloquent教程)  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  详解jQuery停止动画——stop()方法的使用  韩国服务器如何优化跨境访问实现高效连接?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  北京专业网站制作设计师招聘,北京白云观官方网站?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  大同网页,大同瑞慈医院官网?  微信公众帐号开发教程之图文消息全攻略  EditPlus中的正则表达式实战(5)  Swift中swift中的switch 语句  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  如何快速重置建站主机并恢复默认配置?  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  北京网站制作公司哪家好一点,北京租房网站有哪些?  新三国志曹操传主线渭水交兵攻略  Linux系统命令中tree命令详解  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  如何在云主机上快速搭建多站点网站?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  如何制作一个表白网站视频,关于勇敢表白的小标题?  如何安全更换建站之星模板并保留数据?  如何有效防御Web建站篡改攻击?  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  如何构建满足综合性能需求的优质建站方案?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  零服务器AI建站解决方案:快速部署与云端平台低成本实践  北京企业网站设计制作公司,北京铁路集团官方网站?  Laravel如何优化应用性能?(缓存和优化命令)  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  简单实现jsp分页  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】