有关宏的一个简单的问题

来源:互联网 发布:js 文本框中数值 合计 编辑:程序博客网 时间:2024/06/15 22:30

不太了解宏,写了一个宏的简单程序

#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++中则无此限制。

原创粉丝点击