在C语言中,宏是一种预处理指令,用于在编译之前对代码进行文本替换。使用宏可以提取内容,即将一段代码片段或表达式封装为一个宏,以便在程序中多次使用。 宏的定义使用#define关键字,语法如下: 代码语言:txt 复制 #define 宏名 替换内容 在提取内容时,宏可以用于以下几个方面: 提取常量:可以使用宏定义常量,以便在代...
大家都知道,在C语言中,我们可以通过宏FILE、 __LINE__来获取文件名和行号,而在Java语言中,则可以通过StackTraceElement类来获取文件名、类名、方法名、行号,具体代码如下: public static int getLineNumber( ){ StackTraceElement[] stackTrace = new Throwable().getStackTrace(); return stackTrace[1].getLineNumber...
该命令有两种格式:一种是简单的常量宏定义, 另一种是带参数的宏定义。 不带参数的宏:#define< 名字 >< 值 > 要注意,没有结尾的分号,因为不是C的语句,名字必须是一个单词,值可以是各种东西,宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏名,这只是一种简单的代换,字符串中可以含任...
标识符中的...代表可变参数,args表示可变参数的名字,__LINE__是编译器内置的宏定义,表示当前行号。对于以上宏定义,如果我们传入的可变参数为空,会造成fprintf参数中多了一个逗号从而报错,为了解决这个问题,使用##表示如果可变参数为空,预处理器将去除掉它前面的那个逗号。 类似宏定义还有 #define debug(format, ....
与__FILE__宏和__builtin_FILE()函数功能类似,它只包含当前编译单元的文件名,不包含任何路径信息(理论上是这样,实际往往跟__FILE__内容一致)。 使用__PRETTY_FUNCTION__宏 __func__宏可以获取当前函数名,而__PRETTY_FUNCTION__宏可以获取当前函数的带有参数和返回类型的完整签名,其中包含了源码文件路径。
1.3 内置宏 __FILE__//被编译的文件名: file1.c__LINE__// 当前行号:25__DATE__//编译时的日期: Jan 31 2012__TIME__//编译时的时间: 17:01:01__STDC__//编译器是否遵循标准C规范 1 内置宏的使用 #include<stdio.h>#include<malloc.h>#define MALLOC(type, x) (type*)malloc(sizeof(type...
当前运行文件名宏 c:\users\admin\desktop\test\define.cpp 当前运行函数宏 main 当前运行函数宏 main 1. 2. 3. 4. 5. 6. linux输出结果 程序最后编译日期宏 May 8 2020 程序最后编译时间宏 11:19:00 当前行数宏 9 当前运行文件名宏 define.cpp ...
C语言获取目录下所有文件名 C语言获取指定目录文件名,其主要运用一个结构体存取文件信息_finddata_t,另外还需要_findfirst()、_findnext()和_fineclose()三个函数的搭配使用,定义都在#include <io.h>这个头文件中。 unsigned atrrib:文件属性的存储位置。它存储一个unsigned单元,用于表示文件的属性。文件属性是用...
预处理器的主要任务包括 宏替换、文件包含、条件编译等。 预处理指令: (1)预处理指令应该放在代码的开头部分。 (2)预处理指令都以# 开头,指令前面可以有空白字符(比如空格或制表符),# 和指令的其余部分之间也可以有空格,但是为了兼容老的编译器,一般不留空格。(3)预处理指令都是一行的,除非在行尾使用反斜杠,...
获取函数名 作为一个C++程序员,可能经常遇到 __TIME__、__FILE__、__DATE__ 这样的宏,它们会在编译时,分别转换为包含编译时间、处理的转换单元名称及当前时间的字符串。 在最新的ISO C标准中,如大家所知的C99,加入了另一个有用的、类似宏的表达式__func__,其会报告未修饰过的(也就是未裁剪过的)、正在...