c语言宏
2023-04-02 本文已影响0人
hehehehe
https://blog.csdn.net/qq_28576837/article/details/125091757
C 语言提供的预处理功能有三种,分别为宏定义、文件包含和条件编译
宏定义
#define 标识符 字符串
#表示这是一条预处理命令(在C语言中凡是以#开头的均为预处理命令)
define:宏定义命令
标识符:所定义的宏名
字符串:可以是常数、表达式、格式串等
// 不带参数的宏定义
#define MAX 10
/*带参宏定义*/
#define M(y) (((y)*(y))+(3*(y)))
/*宏调用*/
k=M(MAX);
#define HELLO "hello \
the world"
条件编译
#if、#elif、#else 和 #endif 都是预处理命令
#ifdef 可以认为是 #if defined 的缩写。
#if 后面跟的是“整型常量表达式”,
而 #ifdef 和 #ifndef 后面跟的只能是一个宏名,不能是其他的。
if 命令
image.pngifdef 命令
image.png#include <stdio.h>
#include <stdarg.h>
void Printlnf(const char *format, ...) {
va_list args;
va_start(args, format);
vprintf(format, args);
printf("\n");
va_end(args);
}
// "Hello ""world" ==> "Hello world"
// __FILE__
// __LINE__
// __FUNCTION__
// (../05.printlnf.c:20) main :
#define PRINTLNF(format, ...) printf("("__FILE__":%d) %s : "format"\n",__LINE__, __FUNCTION__, ##__VA_ARGS__)
#define PRINT_INT(value) PRINTLNF(#value": %d", value)
int main() {
int value = 2;
Printlnf("Hello World! %d", value);
PRINTLNF("Hello World! %d", value);
PRINTLNF("Hello World!");
PRINT_INT(value); // value: 2
int x = 3;
PRINT_INT(x);
PRINT_INT(3 + 4);
return 0;
}