宏 __LINE__ __FILE__ __FUNCTION__

C的这些宏有什么意义呢

__LINE__

__FILE__
__DATE__
__TIME__

__STDC__

__FUNCTION__

#include   <iostream> 
using   namespace   std; 
void   main(void) 

cout   < <   __FILE__   < <   endl;   //   当前文件路径 
cout   < <   __LINE__   < <   endl;   //   当前文件编译行数 
cout   < <   __DATE__   < <   endl;   //   编译日期 
cout   < <   __TIME__   < <   endl;   //   编译时间

cout   < <   __FUNCTION__   < <   endl;   //   函数名称

}

因此我们可以在debug的时候输入更多有意义的调试信息

如下面的:
NSLog(@"%s:%d, %s",__FILE__, __LINE__, __FUNCTION__);

时间: 2024-08-02 05:20:23

宏 __LINE__ __FILE__ __FUNCTION__的相关文章

PHP __DIR__, __FILE__, __FUNCTION__, __CLASS__, __METHOD__, __LINE__, __NAMESPACE__

PHP has large number of predefined constants. This HOWTO will present the seven most important, most practical and most useful PHP Magic Constants. __FILE__ – The full path and filename of the file. __DIR__ – The directory of the file. __FUNCTION__ –

编译器内置宏__LINE__

编译器内置宏: 先介绍几个编译器内置的宏定义,这些宏定义不仅可以帮助我们完成跨平台的源码编写,灵活使用也可以巧妙地帮我们输出非常有用的调试信息. ANSI C标准中有几个标准预定义宏(也是常用的): __LINE__:在源代码中插入当前源代码行号: __FILE__:在源文件中插入当前源文件名: __DATE__:在源文件中插入当前的编译日期 __TIME__:在源文件中插入当前编译时间: __STDC__:当要求程序严格遵循ANSI C标准时该标识被赋值为1: __cplusplus:当编写C

宏定义中的常见使用

/*** *yy_room *2015-3-6 * * */ #include <iostream> #include <cstdio> using namespace std; /* * # 表示将一个宏的参数转换为字符串字面量 * ## 将两边记号连接在一起 * */ #define MACRO_GET_SET(T,VarName,FuncName) protected: T VarName; public: T get##FuncName() {return VarName;

预定义宏,C语言预定义的宏详解

1.预定义宏 对于预定义宏,相信大家并不陌生.为了方便处理一些有用的信息,预处理器定义了一些预处理标识符,也就是预定义宏.预定义宏的名称都是以"__"(两条下划线)开头和结尾的,如果宏名是由两个单词组成,那么中间以"_"(一条下划线)进行连接.并且,宏名称一般都由大写字符组成. 在日常项目编程中,预定义宏尤其对多目标平台代码的编写通常具有重大意义. 通过预定义宏,程序员使用"#ifdef"与"#endif"等预处理指令,就可使

C语言使用宏输出调试信息实战

如何使用宏定义输出信息 C语言提供了#, ##, __VA_ARGS__等符号来帮助我们在宏定义中更好地输出信息.使用方式如下: 输出如下: #的作用是,它会在所引用的宏变量左右两边加一对引号.所以FUN1中的printf函数不会出错,因为FUN1(hello)预编译时被替换成了printf("hello\n") ##的作用是,把两个宏变量连接成一个,FUN2(1, 2)预编译时被替换成了printf("The num is %d\n", 12) 支持c99标准的编

C语言预处理命令详解

一  前言 预处理(或称预编译)是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作.预处理指令指示在程序正式编译前就由编译器进行的操作,可放在程序中任何位置. 预处理是C语言的一个重要功能,它由预处理程序负责完成.当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译. C语言提供多种预处理功能,主要处理#开始的预编译指令,如宏定义(#define).文件包含(#include).条件编译(#ifdef)等.合理使用预处理功能编

C语言预处理器命令详解【转】

本文转载自:http://www.cnblogs.com/clover-toeic/p/3851102.html 一  前言 预处理(或称预编译)是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作.预处理指令指示在程序正式编译前就由编译器进行的操作,可放在程序中任何位置. 预处理是C语言的一个重要功能,它由预处理程序负责完成.当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译. C语言提供多种预处理功能,主要处理#开始的预编

C程序bug精确定位

本文主要介绍如何利用C标准宏定义(__FILE__, __FUNCTION__, __LINE__)结合assert来更精确的定位导致assert的出错点.尤其在带有深层的函数嵌套调用的复杂程序中,使用__FILE__, __FUNCTION__, __LINE__这3个工具在追踪模糊不清的bug时非常重要. 宏assert的原型定义在头文件<assert.h>中,其作用是如果测试的条件返回错误(即测试等于0),则终止程序执行. 原型定义如下: #include<assert.h>

使用Line Pos Info 和 Modern C++ 改进打印日志记录

使用Line Pos Info 和 Modern C++ 改进打印日志记录 使用跟踪值:不管自己是多么的精通,可能仍然使用调试的主要方法之一 printf , TRaCE, outputDebugString, 等…然后扫描输出, 同时调试. 添加有关行号和日志消息来源的文件的信息是一种非常有效的方法,可以为你节省大量时间,在这篇文章将描述一个在visual Studio中特别有用的技巧,在其他IDE/编译器中有所帮助. 还将展示现在C++和C++20如何使代码更好. 常规 在调试C++代码时,