美文网首页
c语言宏

c语言宏

作者: hehehehe | 来源:发表于2023-04-02 16:08 被阅读0次

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.png
ifdef 命令
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;
}

相关文章

  • 精解C语言预处理命令(三)之“宏”的用法二

    关于C语言带参数的宏定义中的参数 C语言允许宏带有参数。在宏定义中的参数称为“形式参数”,在宏调用中的参数称为“实...

  • C 语言 宏 整理

    开头的语句就是预处理命令 语句中可以利用" \ "来换行. 把宏参数变为一个字符串, 用##把两个宏参数贴合在一起...

  • c语言的宏

    C语言的宏 宏是一个字符串替换的工具,再编译之前,预处理阶段完成。以#define起始的行为宏的定义。宏中出现的几...

  • C语言宏offsetof

    C 库宏 offsetof(type, member-designator) 会生成一个类型为 size_t 的整...

  • C语言宏定义

    1、一般定义 2、条件判断 3、编译时错误信息 4、系统常见自定义宏 5、宏参数的字符串化和宏参数的连接

  • const 宏 static extern

    IOS 基础-define、const、extern、全局变量 const 与 宏的区别 : C语言宏高级用法 [...

  • C语言学习:C语言宏定义

    学C语言很久了,但还是不敢用宏定义,大神喜欢用宏定义。关于宏定义你又了解多少了,下面我们说一下宏定义。 宏定义的概...

  • iOS nil、Nil、NULL和[NSNull null]

    NULL 是宏,是对于 C 语言指针而使用的,表示空指针nil 是宏,是对于 Objective-C 中的对象而使...

  • C语言自定义布尔bool类型

    C语言没有布尔类型,可以采用宏定义创建该类型

  • CPP常识 04 -- 宏,#号##号,可变参数

    文章来自于这里:c语言中的宏,#号##号,可变参数 C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于...

网友评论

      本文标题:c语言宏

      本文链接:https://www.haomeiwen.com/subject/oqsrddtx.html