【C语言】--- 常见调试信息预处理器宏

news2024/12/28 4:09:25

在这里插入图片描述

  • 在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。
  • 而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。

【C语言】--- 常见调试信息预处理器宏

  • 开发环境
  • 一、 `__FILE__`
  • 二、`__LINE__`
  • 三、 `__FUNCTION__` 或 `__func__`
  • 四、 `__DATE__`
  • 五、 `__TIME__`


开发环境

  • 开发环境:linux

当然,以下是将说明、用途和示例代码整合在一起的排版:

一、 __FILE__

说明
__FILE__是一个预处理器宏,用于获取当前源代码文件的路径。

用途

  • 调试和日志记录时,提供出错的文件路径。
  • 便于定位和修复代码中的问题。

示例代码

#include <stdio.h>

int main() {
    printf("当前文件路径是: %s\n", __FILE__);
    return 0;
}

二、__LINE__

说明
__LINE__是一个预处理器宏,用于获取当前源代码行号。

用途

  • 在调试时快速定位出错的代码行。
  • 日志记录中提供详细的行号信息。

示例代码

#include <stdio.h>

int main() {
    printf("当前代码行号是: %d\n", __LINE__);
    return 0;
}

三、 __FUNCTION____func__

说明
__FUNCTION__(某些编译器)或__func__(C99标准)是预处理器宏,用于获取当前函数的名称。

用途

  • 在函数内部进行调试和日志记录时,提供当前执行的函数名。
  • 性能分析和测试时,标识正在执行的函数。

示例代码

#include <stdio.h>

void exampleFunction() {
    printf("当前函数名称是: %s\n", __FUNCTION__);
}

int main() {
    exampleFunction();
    return 0;
}

四、 __DATE__

说明
__DATE__是一个预处理器宏,用于获取源代码文件的编译日期。

用途

  • 版本控制和日志记录时,提供代码的编译日期信息。
  • 追踪和管理代码版本,特别是在更新或修改代码后。

示例代码

#include <stdio.h>

int main() {
    printf("代码编译日期是: %s\n", __DATE__);
    return 0;
}

五、 __TIME__

说明
__TIME__是一个预处理器宏,用于获取源代码文件的编译时间。

用途

  • 提供更精确的编译时间信息,用于版本控制和日志记录。
  • 调试和性能分析时,帮助识别和解决冲突或问题。

示例代码

#include <stdio.h>

int main() {
    printf("代码编译时间是: %s\n", __TIME__);
    return 0;
}

这些宏在C和C++编程中提供了关于源代码的上下文信息,对于调试、日志记录、版本控制和性能分析等方面非常有帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1835807.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何用Java SE数组实现高速的数字转换功能

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

技术分析:开源大模型的兴起与热门项目推荐

技术分析&#xff1a;开源大模型的兴起与热门项目推荐 引言 随着人工智能&#xff08;AI&#xff09;技术的不断发展&#xff0c;开源大模型成为了许多程序员和研究人员关注的焦点。开源项目不仅促进了技术的快速迭代和普及&#xff0c;还为更多的人提供了学习和实践的机会。…

推荐常用的三款源代码防泄密软件

三款源代码防泄密软件——安秉源代码加密、Virbox Protector 和 MapoLicensor——确实各自在源代码保护的不同方面有其专长。这些软件可以满足企业对于源代码保护的三大需求&#xff1a;防止泄露、防止反编译和防止破解。 安秉源代码加密&#xff1a; 专注于源代码文件的加密&…

惊艳视觉!7个让你大开眼界的数据可视化案例

数据可视化是指通过视觉呈现信息的一种方式&#xff0c;它仍处于不断演变的过程中。许多企业、政府和其他组织都使用数据可视化分析来寻求保持竞争优势。在界面设计中&#xff0c;数据可视化也呈现出越来越流行的趋势&#xff0c;学习数据可视化也是设计师保持竞争优势的一种方…

进程间通信以及线程的同步互斥机制

1.进程间通信机制 常用的六种通信机制&#xff1a; 管道、消息队列、共享内存、信号灯集、信号、Socket 管道&#xff08;Pipe&#xff09;和无名管道&#xff08;匿名管道&#xff09;&#xff1a; 管道是一种半双工的通信方式&#xff0c;数据只能单向流动&#xff0c;通常…

AI在医学中神奇应用

2022年11月30日&#xff0c;可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT-3.5&#xff0c;将人工智能的发展推向了一个新的高度。2023年11月7日&#xff0c;OpenAI首届开发者大会被称为“科技界的春晚”&#xff0c;吸引了全球广大…

前端菜鸡学习日记 -- 关于pnpm

哈咯哇大家&#xff0c;我又来了&#xff0c;最近稍微悠闲一些&#xff0c;所以就趁着这个机会学习一些新的知识&#xff0c;今天就是碰巧遇到了pnm&#xff0c;这个可以看作是npm的升级版本&#xff0c;比npm要快&#xff0c;用起来也更得劲更迅速 官网地址&#xff1a;https…

jupyter使用的一个奇怪bug——SyntaxError: invalid non-printable character U+00A0

bug来由&#xff1a;从其他部分例如kaggle里复制来的代码直接粘贴在jupyter notebook里&#xff0c;每一行代码都会出现&#xff1a; Cell In[5], line 1 warnings.filterwarnings(ignore) ^ SyntaxError: invalid non-printable character U00A0 单元格 In[5]&#xff0c;第 …

Rocky Linux 更换CN镜像地址

官方镜像列表&#xff0c;下拉查找 官方镜像列表&#xff1a;https://mirrors.rockylinux.org/mirrormanager/mirrorsCN 开头的站点。 一键更改镜像地址脚本 以下是更改从默认更改到阿里云地址 cat <<EOF>>/RackyLinux_Update_repo.sh #!/bin/bash # -*- codin…

react native中基于webview的腾讯图形验证码

react native中基于webview的腾讯图形验证码 效果实例图第三方库 腾讯验证码 效果实例图 第三方库 npm i react-native-webviewreact-native-webview import React, { useEffect, useState } from react; import { StyleSheet, Text, View } from react-native; import { We…

8.12 矢量图层面要素单一符号使用二(仅渲染中心点)

文章目录 前言仅渲染中心点&#xff08;Centroid fill&#xff09;QGis设置面符号为仅渲染中心点&#xff08;Centroid fill&#xff09;二次开发代码实现仅渲染中心点&#xff08;Centroid fill&#xff09; 总结 前言 本章介绍矢量图层线要素单一符号中仅渲染中心点&#xf…

【三】【QT开发应用】VSQT和QTCreator项目互相转化的方法,QTCreator项目转化VSQT,VSQT转化为QTCreator

VSQT和QTCreator项目互相转化的方法 QTCreator项目转化VSQT 环境变量配置 将qmake.exe所在的目录添加到系统path里面. 转化命令 qmake -tp vc xxx.pro 生成.vcxproj文件 环境变量配置 将qmake.exe所在的目录路径添加到系统path中. 接着用cmd命令行转换,可能出现的问题 …

C++ 70 之 类模版中的成员函数,在类外实现

#include <iostream> #include <string> using namespace std;template<class T1, class T2> class Students10{ public:T1 m_name;T2 m_age;Students10(T1 name, T2 age); // 类内声明 类外实现// {// this->m_name name;// this->m_age …

淘宝文件系统-哈希查找分析

一.框架理解 在淘宝文件系统中&#xff0c;通常会将文件索引存储在一块内存中&#xff0c;这块内存包含了若干个主块&#xff08;Index Block&#xff09;。每个主块中存储着多个文件的索引信息。每个文件的索引按照哈希表的形式进行存储&#xff0c;通过哈希值来定位到具体的文…

QPST的使用

QPST&#xff08;Qualcomm Product Support Tool&#xff09;是一个针对高通芯片开发的传输软件。 下载软件 进行安装 安装后使用&#xff0c;QPSTConfig 可以自动抓取dump的log 使用QFile 刷机

DDPM公式推导(六)

为了整篇文章的完整性&#xff0c;给出文章剩余部分的翻译。这篇博客没有公式推导部分。 4 Experiments 我们在所有实验中设置 T 1000 T1000 T1000&#xff0c;以使采样过程中神经网络评估的次数与之前的工作 [53, 55] 相匹配。我们将前向过程的方差设置为从 β 1 1 0 − …

Redis 6.0新特性详解

Redis 6.0新特性主要有3个&#xff1a;多线程、Client Side Cache、Acls。下面详细说明一下。 1.多线程 redis 6.0 提供了多线程的支持&#xff0c;redis 6 以前的版本&#xff0c;严格来说也是多线程&#xff0c;只不过执行用户命令的请求时单线程模型&#xff0c;还有一些线…

基于YOLOv10深度学习的高密度人脸智能检测与统计系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

【PPT设计前沿】2024年PPT新趋势,让你的演示文稿引领潮流!

文章目录 一、简约风格的新诠释二、动态元素与交互性的深度融合三、个性化与定制化的独特展现四、大数据与可视化的创新应用五、绿色环保与可持续性的倡导《PPT完美设计入门与进阶/入门与进阶》图书特色内容简介目录前言/序言 获取方式 随着技术的不断革新和创意设计的蓬勃发展…

注解详解系列 - @ResponseStatus

注解简介 在今天的每日一注解中&#xff0c;我们将探讨ResponseStatus注解。ResponseStatus是Spring框架中的一个注解&#xff0c;用于为控制器方法指定HTTP响应状态码和理由短语。 注解定义 ResponseStatus注解用于标记控制器方法或异常类&#xff0c;以指示HTTP响应的状态码…