#include <stdio.h>int main() {//#ifdef YI //如果编译的时候定义了YI这个宏,就编译前一组语句忽略后一组语句,否则编译后一组语句忽略前一组语句#ifndef ER //如果编译的时候没有定义ER这个宏,就编译前一组语句忽略后一组语句,否则编译后一组语句忽略前一组语句printf("1\n");#elseprintf("2\n");#...
避免递归定义:宏定义不能递归调用自身,否则会导致编译错误。 综上所述,字符串宏定义在C语言中是一种非常有用的特性,可以帮助程序员提高代码的可读性和可维护性。然而,在使用时也需要注意避免一些常见的陷阱和错误。
#define命令是C语言中的一个宏定义命令,它用来讲一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。该命令有两种格式:一种是简单的宏定义(不带参数的宏定义),另一种是带参数的宏定义。 (1) 简单的宏定义 格式:#define <宏名/标识符> <字符串> eg:#define PI 3.1415926 说明...
C语言允许宏带有参数。在宏定义中的参数称为“形式参数”,在宏调用中的参数称为“实际参数”,这点和函数有些类似。对带参数的宏,在展开过程中不仅要进行字符串替换,还要用实参去替换形参。带参宏定义的一般形式为:#define 宏名(形参列表) 字符串 在字符串中可以含有各个形参。带参宏调用的一般形式为:宏名...
1.宏定义的格式为:#define标识符字符串。 2.宏定义属于预处理命令,在编译过程中的预处理阶段处理。 3.宏定义只是单纯的替换,所以当被替换内容涉及运算等的时候好加上括号()。 4.宏定义的标示符一般用大写。 5.宏定义的标示符为常量标示符,即不可再赋值。
#include<stdio.h>#definebb(i)printf("我是宏替换的:%d",i);intmain(){bb(666);} 我是宏替换的:666 那要是想在字符串里面加一个宏定义中的参数呢? #include<stdio.h>// 使用#直接在字符串中进行宏替换,否则默认情况下会被当做一个字符#definebb(str)printf("我是宏替换的:"#str" <");intmain...
通过C 语言的宏(MICRO),可以把数值或者一段字符的组合,转换为字符串。 因为C语言的宏在【预处理】阶段就展开了,所以可以实现一些比较使用的功能,比如一些数据的初始化操作 比如定义一个宏,传入的宏的参数是一个 func 函数名,经过宏的层层处理,可以把这个函数名以字符串的方式取出来,并赋值给结构体的 字符指针成...
字符串宏定义: #defineSTR(str) #str #include <stdio.h> //注意宏后面的为逗号表达式,返回的是第 1 个表达式的值 //该宏最大的用处在于,可以输出被调用的函数的名称 #define CALL(f,p) (printf("Call function %s\n",#f),f(p)) int square(int n) ...