C++中可以用#define定义其它类型的值吗?
#include<iostream>#include<string>usingnamespacestd;intmain(){#definea"helloworld!"//...
#include <iostream>
#include <string>
using namespace std;
int main()
{
#define a "hello world!"//比如这里可以定义string 数据和数字除外还可以定义其它数据的值吗?
string c;
c.append(a);
cout << a << endl;
}
谁能给个例子,比如一个类给替换了,写个例子,不胜感激。 展开
#include <string>
using namespace std;
int main()
{
#define a "hello world!"//比如这里可以定义string 数据和数字除外还可以定义其它数据的值吗?
string c;
c.append(a);
cout << a << endl;
}
谁能给个例子,比如一个类给替换了,写个例子,不胜感激。 展开
4个回答
展开全部
#define是宏定义,而不是变量定义。
说白了,它只是起到一个简单的文本替换的作用,仅仅在编译时进行文本替换。等编译完成以后,宏就不存在了。
所以,#define和变量类型没有任何关系,你定义成什么内容都可以。甚至可以定义一段代码、一个函数……
例如:
#define A 1000
#define B "HelloWorld"
#define C 'c'
#define D 3.1415
#define MAX(x,y) ((x)>(y)?(x):(y))
#define LOG(msg) fprintf(stderr, "%s\n", msg);
#define LIST(folder) MYFILE *f = get_file_list(folder); \
while (f != NULL) \
{
list_file(f); \
f ++; \
}
说白了,它只是起到一个简单的文本替换的作用,仅仅在编译时进行文本替换。等编译完成以后,宏就不存在了。
所以,#define和变量类型没有任何关系,你定义成什么内容都可以。甚至可以定义一段代码、一个函数……
例如:
#define A 1000
#define B "HelloWorld"
#define C 'c'
#define D 3.1415
#define MAX(x,y) ((x)>(y)?(x):(y))
#define LOG(msg) fprintf(stderr, "%s\n", msg);
#define LIST(folder) MYFILE *f = get_file_list(folder); \
while (f != NULL) \
{
list_file(f); \
f ++; \
}
展开全部
define 本质上相当于 字符串替换 ,也就是替换你代码里的文本
因此它本身是没有任何类型的,可以是数字 可以是单词 等等
比如
#define AAA 5
那么 当你这么使用时
int a= AAA ;
就相当于定义了一个数字.
而你要是
#define AAA tom
int tom,jerry;
jerry=AAA;
这又相当于 定义了一个单词(标识符),等价于
jerry=tom;
所以 ,define 和类型没啥关系, 他就是相当于替换代码
因此它本身是没有任何类型的,可以是数字 可以是单词 等等
比如
#define AAA 5
那么 当你这么使用时
int a= AAA ;
就相当于定义了一个数字.
而你要是
#define AAA tom
int tom,jerry;
jerry=AAA;
这又相当于 定义了一个单词(标识符),等价于
jerry=tom;
所以 ,define 和类型没啥关系, 他就是相当于替换代码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以,define是简单的替代,再预编译时会把被替代的值还原,比如c.append(a),预编译后变成c.append("hello world!"),所以其他类型的也行,只要在还原替代后语法没有错误
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以,#define只是在编译时的替换,啥都可以定义,数据,字符串,函数,标识符
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |