不太了解宏,写了一个宏的简单程序
#include <stdio.h>
//#include <iostream.h>
#define pitch no_a.name
struct node
{
int a;
char *name;
};
main()
{
struct node no_a;
no_a.a=9;
no_a.name="ni rang wo zm zuo a /n";
printf("%s",pitch);
//cout << pitch;
}
其实宏就是一个简单的展开,在c++中最好还是使用const和inline函数来代替宏变量和宏函数,因为宏会产生边际效应。
在编译此程序的过程中还要注意两点
(1)编译器并不区分宏变量和宏函数,因此定义宏变量和宏函数的时候不能重名,如
#define Max 100
#define Max(a,b) ((a>b)?a:b)
这样的话编译器就会提示重复定义
(2)在C 语言中,声明结构体变量的时候,应加上关键字struct 如:struct node no;
如果不带,编译器就会提示node没有声明
但是c++中则无此限制。