C++中可以用#define定义其它类型的值吗?

#include <iostream>
#include <string>
using namespace std;
int main()
{
#define a "hello world!"//比如这里可以定义string 数据和数字除外还可以定义其它数据的值吗?
string c;
c.append(a);
cout << a << endl;
}
谁能给个例子,比如一个类给替换了,写个例子,不胜感激。

#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 ++; \
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-06-08
define 本质上相当于 字符串替换 ,也就是替换你代码里的文本
因此它本身是没有任何类型的,可以是数字 可以是单词 等等
比如
#define AAA 5
那么 当你这么使用时

int a= AAA ;
就相当于定义了一个数字.

而你要是
#define AAA tom
int tom,jerry;
jerry=AAA;
这又相当于 定义了一个单词(标识符),等价于
jerry=tom;

所以 ,define 和类型没啥关系, 他就是相当于替换代码
第2个回答  2010-07-21
可以,define是简单的替代,再预编译时会把被替代的值还原,比如c.append(a),预编译后变成c.append("hello world!"),所以其他类型的也行,只要在还原替代后语法没有错误
第3个回答  2010-07-21
可以,#define只是在编译时的替换,啥都可以定义,数据,字符串,函数,标识符
相似回答