#define 替换 (字符串内
#include<stdio.h>
#define PINTF(format,value) printf(" "format" \n",value)
int main(){
PINTF("%d",5);
return ;
}
为什么 %d和format要加上“”才能正常输出呢 ,不是直接替换吗
#include<stdio.h>
#define PINTF(format,value) printf(" format\n",value)
int main(){
PINTF(%d,5);
return ;
}
这样都不行
因为format在字符串中,这个format不会被替换
$ cat main.c
//#include<stdio.h>
#define PINTF(format,value) printf(" format\n",value)
int main(){
PINTF(%d,5);
return ;
}
$ gcc -E main.c
# 1 "main.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "main.c"
int main(){
printf(" format\n",5);
return ;
}
$
把预处理器的结果输出出来看一下就明白了
$ cat main.c
//#include<stdio.h>
#define PINTF(format,value) printf(" "format" \n",value)
int main(){
PINTF("%d",5);
return ;
}
$ gcc -E main.c
# 1 "main.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "main.c"
int main(){
printf(" ""%d"" \n",5);
return ;
}
$
#include<stdio.h>
#define PINTF(format,value) printf(#format" \n",value)
//format在双引号里面是普通文本,用#能把format变成字符串%d
//%d不用加双引号
int main(){
PINTF("%d",5);
return 0;
} 人造人 发表于 2021-6-24 11:03
把预处理器的结果输出出来看一下就明白了
哦哦哦 浮华染流年 发表于 2021-6-24 11:04
谢谢
页:
[1]