想请教下各位大佬,这个宏定义作用是什么?前面#有什么用
将标识符变转成字符串
谢谢,请问您的意思是
比如:
x=6 是int
麻烦问下,这个define整体是想干什么呢
@黑暗尽头的超音速炬火: 打印一个变量的值,并且在打印的输出里加上这个变量的名称
#de(x) #x
的话de(somevar)会被替换为"somevar"
就像这样
➜ tmp cat test.c
#define de(x) #x
#define a(x) prefix_##x
de(somevar)
a(somevar)
➜ tmp cpp test.c
# 1 "test.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 31 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 32 "<command-line>" 2
# 1 "test.c"
"somevar"
prefix_somevar
➜ tmp
@黑暗尽头的超音速炬火: 宏是预处理, 预处理的时候没有变量. 只是进行字符串替换.
写了一个demo,方便理解:
#include <iostream>
using namespace std;
#define de(x) cout << #x <<" = "<< x <<endl
int main(){
string a = "hello world!";
de(a);
}
g++ -Wall -std=c++11 -o hello hello.cpp
从图片上能看到#x将标识符转换成字符串的形式
这种宏定义的作用:
如有帮助,请采纳~~~ 😄
谢谢,请问这种用法只能在头文件吗?能否在主函数中使用,或者是否有类似的用法呢
@黑暗尽头的超音速炬火:
@wengle: 请问这种用法有在主函数中直接实现的吗?就是不用宏定义,其他的写法在主函数直接定义达到输出类型和变量的目的