C/C++中的五个预定义的宏名

跨平台c/c++编码的预定义宏 c/c++中编写跨平台的代码时,难免需要根据不同的操作系统、编译器等准备不同的代码。 首先,不同平台中编译器预定义宏的参考资料 点击这里 其次,我本人仅关注以下平台:linux32/64-gcc, win32/64-vc, win32/64-mingw,这里给一个我自用的侦测上述平台的头文件 /** * @file - * @author jingqi * @date 2011-1 阅读详情
C/C++中的五个预定义的宏名,它们是:
__LINE__
__FILE__
__DATE__
__TIME__
__STDC__
C++中还定义了 __cplusplus


如果编译器不是标准的,则可能仅支持以上宏名中的几个,或根本不支持。记住编译程序也许还提供其它预定义的宏名。


__DATE__ 进行预处理的日期(“Mmm dd yyyy”形式的字符串文字,如May 27 2006)
__FILE__ 代表当前源代码文件名的字符串文字 ,包含了详细路径,如G:/program/study/c+/test1.c
__LINE__ 代表当前源代码中的行号的整数常量
__TIME__ 源文件编译时间,格式微“hh:mm:ss”,如:09:11:10;
__func__ 当前所在函数名,在编译器的较高版本中支持
__FUNCTION__ 当前所在函数名
  对于__FILE__,__LINE__,__func__,__FUNCTION__ 这样的宏,在调试程序时是很有用的,因为你可以很容易的知道程序运行到了哪个文件的那一行,是哪个函数。
而对于__DATE__,__TIME__则可以获取编译时间,如如下代码通过宏获取编译时间,并通过sscanf()从中获取具体的年月日时分秒数据,可在代码中做相应使用。我的代码中是根据此数据作为版本标识,并依此判断哪个版本新些及是否需要升级。
char * creationDate   = __DATE__ ", " __TIME__;
sscanf(creationDate, "%s %d %d, %d:%d:%d", month, &day, &year, &hour, &min, &sec);
《C/C++预定义宏深度剖析:编译上下文获取指南》 这些预定义宏是C/C++生态系统的重要组成部分,合理使用可以显著提升代码的可调试性和可维护性。:展开为当前函数的未限定名称(unqualified name):展开为当前源文件的绝对路径或相对路径字符串。:展开为当前代码行的十进制整数。:展开为编译开始的日期字符串。:展开为编译开始的时间字符串。:C99/C++11引入。:版本信息、构建时间戳。:错误报告、调试日志。配合记录完整构建时间。:调试日志、异常处理。 阅读详情

相关推荐

COCO2017数据集类别分布深度解析

本文深入解析了COCO2017数据集的类别分布情况,包括80个常见物体的分类统计和样本数量分析。通过对比训练集与验证集的分布一致性,探讨了数据均衡性问题,并针对高频和低频类别提出了实用的数据预处理和模型训练建议,帮助优化计算机视觉任务的性能。

weixin_42533751的博客 370

C/C++ 宏定义 __FILE__、__LINE__、__func__、__TIME__ 等

目录 一、用例测试环境 二、宏定义 2.1 __FILE__ 2.2 __LINE__ 2.3 #line 2.4__func__ 和 __FUNCTION__ 2.5__DATE__ 2.6__TIME__ 三、总结 四、参考文献 在C/C++中一些宏可以用来帮助调试或输入到 log 中,本文将整理一些常见的宏。 一、用例测试环境 整篇文章测试用例使用到的环境如下,并不是说一定要在如下环境中才有效,只是指明下本文的测试用例环境。 系统环境:CentOS ...

Muti-Agent 2万+

手把手教你用YOLOv11-seg-LSCD搞定树脂件瑕疵检测(附数据集与代码)

本文详细介绍了如何使用YOLOv11-seg-LSCD模型进行工业级树脂件瑕疵检测,包括环境配置、数据集构建、模型训练与调优、部署优化等全流程。通过LSCD模块的创新设计,有效提升了气泡、裂纹等微小缺陷的检测精度,适用于各类树脂制品的质量检测场景。

weixin_28677005的博客 418

C++ 编程基础(1)宏

宏定义简单点说就是查找替换(文本替换),C中的宏分为两类,对象宏和函数宏。# define 宏名 字符串宏定义不是说明或语句,在行末不必加分号,如加上分号则连分号也一起替换宏定义必须写在函数之外,其作用域为宏定义命令起到源程序结束。

个人技术博客 6900

【020】基于51单片机智能路灯系统Proteus仿真与实物设计

【020】基于51单片机智能路灯系统Proteus仿真与实物设计

小邓子分享官的博客 1878

电感损耗 DCR/ACR/磁芯损耗 3 大来源解析:从集肤效应到磁滞回线

本文深入解析电感损耗的三大来源:DCR(直流电阻)、ACR(交流电阻)和磁芯损耗,从集肤效应到磁滞回线的微观机制。通过对比不同材料和设计策略,提供高频开关电源中电感损耗的优化方案,帮助工程师提升系统效率和可靠性。

weixin_34379433的博客 513

C++ 类名::函数名的用法

C++ 类名::函数名的用法

qq_33300585的博客 1905

从实验室到生活:构建一份全面的手机相机主观画质评测指南

本文详细介绍了如何从实验室数据转向实际体验,构建全面的手机相机主观画质评测指南。通过基础装备清单、室内外场景实战评测及数据之外的感知艺术,帮助用户发现手机相机在色彩还原、动态范围和夜景模式等方面的真实表现。特别关注主观体验与客观参数的差异,提供实用的评测技巧和报告撰写心法。

weixin_30940783的博客 308

c/c++宏函数和多参宏函数

宏函数、多参宏函数

aazhoukeaa的博客 4502

【数据集2】CPC Global Unified Temperature/Precipitation数据简介及处理

简介CPC 温度及降雨 数据

WW、forever的博客 3107

C#量化交易的市场数据采集与分析:从0到1构建你的‘数据雷达’——对比5大神器,代码实战全解析!

数据是量化交易的‘氧气’,而好的数据采集与分析是你的‘呼吸机’!本文5大神器+代码实战,总有一款适合你!(本文代码均经过测试,但请根据实际需求调整!

java专栏 732

C/C++宏的基本使用方法附例子讲解

宏是C/C++所支持的一种语言特性,我对它最初的印象就是它可以替换代码中的符号,最常见的例子便是定义一个圆周率,之后在代码中使用 来代替具体圆周率的值。 确实如此,宏提供了一种机制,能够使你在编译期替换代码中的符号或者语句。当你的代码中存在大量相似的、重复的代码时,使用宏可以极大的减少代码量,便于书写。...

哇咔咔的博客 1万+

vue3 - 详细实现用户收货地址识别解析“姓名/手机号/省市区/街道/乡镇村庄“关键字,用户复制粘贴一段含有姓名电话/详细地址的文字文本信息,vue3自动识别拆分并填入到对应表单字段中,详细示例代码

vue3,nuxt3,快递地址读取,收货地址解析、快递地址解析、物流地址解析自动识别,收货地址解析,从发货地址中拆出姓名电话地址,根据粘贴的字符串提取姓名地址,vue3地址信息自动识别,ts,vue3智能识别地址,提取姓名电话地址信息,自动识别出省市区街道姓名手机号等,根据文本自动解析出收货信息,怎么识别文本中的手机号,粘贴板地址识别,地址智能识别,如何识别收货地址中的关键字,粘贴一段文字后,自动识别到姓名/手机号/收货地址,vue3仿淘宝地址智能识别解析实现,省市区街道智能解析,vue3收货地址,识别地址

✅ 精选推荐文章 5501

C/C++中的预定义宏

预定义宏是由编译器自动定义的标识符,它们包含了编译器、操作系统、文件名、行号等编译时信息。开发者可以直接在代码中使用这些宏,而无需手动定义。C语言/C++中的预定义宏LINE描述:当前源代码行号。return 0;FILE描述:当前源文件名。return 0;DATE描述:编译的日期。return 0;TIME描述:编译的时间。return 0;STDC描述:如果定义了该宏,则表明编译器符合ANSI C标准。

imoisture的博客 1181

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

c/c++预定义宏

Predefined MacrosVisual Studio 2005Other Versions Visual Studio 2010Visual Studio 2008Visual Studio .NET 2003<br /> <br />Names the predefined ANSI C and Microsoft C++ implementation macros.<br />The compiler recognizes predefined ANSI C macros and the Mic

lucky-lucky 2679

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

C++预定义宏

很长一段时间在win下开发,把一些win下特有的宏和标准c++预定义宏混淆了。记录一下 参考链接:https://msdn.microsoft.com/zh-cn/library/b0084kay.aspx https://en.cppreference.com/w/cpp/preprocessor/replace   Visual c + + 编译器预定义某些预处理器宏,具体取决于语言 ...

lsfreeing的专栏 4235

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

一文讲清楚c/c++中的宏

使用。

qq_39350172的博客 2744

c++ 的一些预定义宏以及宏嵌套展开规则

文章目录C标准中的一些预定义宏C预定义宏#line和#error#pragma (Para)#pragma message 参数。#pragma code_seg#pragma once (比较常用)#pragma hdrstop#pragma resource "*.dfm"#pragma warning( disable : 4507 34; once : 4385; error : 164 )#pragma warning(once:4385)#pragma warning(error:164)#p

四库全书的酷 2509

C/C++的预定义宏

C标准规定了一些预定义宏 C99 标准提供一个名为_ func 的预定义标识符,它展开为一个代表函数名的字符串(该函数包含该标识符)。那么, func 必须具有函数作用域,而从本质上看宏具有文件作用域。因此, func _是C语言的预定义标识符,而不是预定义宏。 注意,其中一些是C99 新增的,所以不支持C99的编译器可能无法识别它们。如果使用 GCC,必须设置-std=c99或-std=c11...

skywf的博客 1391

C++中预定义宏

C++中有许多预定义宏,这些宏在程序编译时由编译器自动定义,并可以在代码中使用。是一个宏,当代码是严格符合标准的 C 语言程序时(即不使用任何扩展),这个宏会被定义。是 Microsoft 编译器特有的一个关键字,用于指定函数、变量或类型的属性。是一个宏,用于表示当前编译环境支持的 C++ 标准版本。:通常用于平台特定的编译选项或特性,以判断是否在 GCC 编译器下编译代码。是用于宏定义中的可变参数的宏,它代表宏调用时传递给宏的所有额外参数。:用于记录代码编译的时间,通常在日志或调试输出中使用。

pumpkin84514的博客 1276

C/C++预定义编译宏

Pre-defined C/C++ Compiler Macros https://sourceforge.net/p/predef/wiki/Home/ The macros are found here: Standards Compilers Libraries Operating systems Architectures General guidelines are ...

WSG的博客--盛年不重来,一日难再晨.及时当勉励,岁月不待人. 3452

C++ 中常见预定义宏的使用

在标准C以及各中编译器中定义了一些对象宏, 这些宏的名称以"__"开头和结尾, 并且都是大写字符. 这些预定义宏可以被#undef, 也可以被重定义。       在ANSI C标准中定义了__FILE__,__LINE__,__DATA__,__TIME__,__STDC__等标准的预定义宏。GCC对其进行扩展,也定义了多个预定义宏。       概括起来GCC中可使用的预定义宏涵盖了如下几

hgl868的专栏 1万+

C语言预定义宏

C语言有很多预定义的宏,认识和使用他们会使得编程变的更加简单!

作为一个既爱敲代码又享受生活的码农,我希望通过这个平台,在编程与大家一起成长! 1114

C/C++预定义宏

作者:酱油和醋 出处:http://www.cnblogs.com/motadou/archive/2009/11/06/1597079.html C/C++预定义宏 下面描述的宏定义,不需引用其他头文件,直接可用于代码中。特定的作用给我们提供了不少的便利。分别描述如下: 1 -- __FILE__,__LINE__,__FUNCTION__或者__func__ __FILE

宠辱不惊,闲看庭前花开花落;去留无意,漫随天外云卷云舒。 969
上一篇: iOS调试技巧---查看View的层次结构 [view recursiveDescription]
下一篇: UILocalNotification本地通知介绍
LIN1986LIN
博客等级 码龄19年 17粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值