精华内容
参与话题
问答
  • 什么是宏定义

    千次阅读 多人点赞 2018-03-04 21:32:42
    1.不带参数的宏定义:  宏定义又称为宏代换、宏替换,简称“宏”。 格式: #define 标识符 字符串  其中的标识符就是所谓的符号常量,也称为“宏名”。 预处理(预编译)工作也叫做宏展开:将宏名替换为字符串。 ...

    1.不带参数的宏定义:
          宏定义又称为宏代换、宏替换,简称“宏”。
    格式:
    #define 标识符 字符串
          其中的标识符就是所谓的符号常量,也称为“宏名”。
    预处理(预编译)工作也叫做宏展开:将宏名替换为字符串。
    掌握"宏"概念的关键是“换”。一切以换为前提、做任何事情之前先要换,准确理解之前就要“换”。
    即在对相关命令或语句的含义和功能作具体分析之前就要换:
    例:
    #define PI 3.1415926
    把程序中出现的PI全部换成3.1415926
    说明:
    (1)宏名一般用大写
    (2)使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。例如:数组大小常用宏定义
    (3)预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查。
    (4)宏定义末尾不加分号;
    (5)宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头。
    (6)可以用#undef命令终止宏定义的作用域
    (7)宏定义可以嵌套
    (8)字符串" "中永远不包含宏
    (9)宏定义不分配内存,变量定义分配内存。
    2.带参数的宏:
    除了一般的字符串替换,还要做参数代换
    格式:
    #define 宏名(参数表) 字符串
    例如:#define S(a,b) a*b
              area=S(3,2);第一步被换为area=a*b; ,第二步被换为area=3*2;
    类似于函数调用,有一个哑实结合的过程:
    (1)实参如果是表达式容易出问题
                #define S(r) r*r
                area=S(a+b);第一步换为area=r*r;,第二步被换为area=a+b*a+b;
                正确的宏定义是#define S(r) (r)*(r)
    (2)宏名和参数的括号间不能有空格
    (3)宏替换只作替换,不做计算,不做表达式求解
    (4)函数调用在编译后程序运行时进行,并且分配内存。宏替换在编译前进行,不分配内存
    (5)宏的哑实结合不存在类型,也没有类型转换。
    (6)函数只有一个返回值,利用宏则可以设法得到多个值
    (7)宏展开使源程序变长,函数调用不会
    (8)宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值)

    展开全文
  • C++宏定义 #include <iostream> #define c a+b using namespace std; int main() { int a = 10; int b = 20; cout << c; } 带参宏定义 #include <iostream> #define c 10 using namespace ...

    C++宏定义

    #include <iostream>
    #define c a+b
    using namespace std;
    
    int main()
    {
    	int a = 10;
    	int b = 20;
    	cout << c;
    }
    

    带参宏定义

    #include <iostream>
    #define c 10
    using namespace std;
    
    int main()
    {
    	cout << c;
    }
    

    不带参宏定义

    展开全文
  • ![图片说明](https://img-ask.csdn.net/upload/201910/11/1570758914_502548.png)
  • 如下面: /* ----- ----- */ #define PCODE ((FLDID32)167872161) /* number: 100001 type: string */ #define ACCOUNT_NO ((FLDID32)167872162) /* number: 100002 type: ...((FLDID32)167872172) 什么意思??
  • 在C语言中 宏定义是什么

    千次阅读 2015-10-09 22:42:29
    宏定义是C提供的三种预处理功能的其中一种,这三种预处理包括:宏定义、文件包含、条件编译 宏定义又称为宏代换、宏替换,简称“宏”。 格式:#define 标识符 字符串 其中的标识符就是所谓的符号常量,也称为...
    宏定义是C提供的三种预处理功能的其中一种,这三种预处理包括:宏定义、文件包含、条件编译

    宏定义又称为宏代换、宏替换,简称“宏”。
    格式:#define 标识符 字符串
    其中的标识符就是所谓的符号常量,也称为“宏名”。
    预处理(预编译)工作也叫做宏展开:将宏名替换为字符串。
    掌握"宏"概念的关键是“换”。一切以换为前提、做任何事情之前先要换,准确理解之前就要“换”。
    即在对相关命令或语句的含义和功能作具体分析之前就要换:
    例:#define PI 3.1415926
    把程序中出现的PI全部换成3.1415926
    说明:
    (1)宏名一般用大写
    (2)使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。例如:数组大小常用宏定义
    (3)预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查。
    (4)宏定义末尾不加分号
    (5)宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头。
    (6)可以用#undef命令终止宏定义的作用域
    (7)宏定义不可以嵌套
    (8)字符串" "中永远不包含宏
    (9)宏定义不分配内存,变量定义分配内存。
    (10)宏定义不存在类型问题,它的参数也是无类型的。
    展开全文
  • 宏定义的位置很随意,可以在主函数内、结构体内… 宏定义主要用于字符串的替换; 接下来我们看两个例子: 一、 #define SUM(x,y) x+y Int a=SUM(1,2)*SUM(4,5); Printf(“%d/n ”,a); 二、 #define SUM(x,y...

    #define 宏名 [宏值] (宏值可以省略)

    宏定义的位置很随意,可以在主函数内、结构体内…
    宏定义主要用于字符串的替换;
    在这里插入图片描述在这里插入图片描述

    接下来我们看两个例子:

    一、

    #define  SUM(x,y)  x+y
    
      Int    a=SUM(1,2)*SUM(4,5);
      
      Printf(“%d/n ”,a);
    
    

    二、

        #define  SUM(x,y)  (x+y)
    	   Int   a=SUM(1,2)*SUM(4,5);
           Printf(“%d/n ”,a);
    

    一的结果为:a=1+24+5=14;
    二的结果为:a=(1+2)
    (4+5)=27

    展开全文
  • 常见的宏定义及其含义A website is a set of web pages that are created to represent some information on a single site. In order to understand and describe the Website’s meaning, we should understand ...
  • 最后一行s[++i],不应该s【1】吗,应该输出B,为什么会输出D呢 ``` #include #include #define TOUPPER(c) ('a'(c)&&(c)(c)-'a'+'A':(c)) void main() { char s[5]; strcpy(s, "abcd"); int i = 0; ...
  • 宏定义编程软件My five year old son, Ramy, approached me one day while I was working from home and asked, “What are you doing Mama?” 我五岁的儿子拉米有一天在我在家工作时走近我,问道:“你在做什么妈妈...
  • 看到别人写的程序 #define DONT_ASSIGN(CLASSNAME) \ protected: \ ...然后在每个类的定义里面写: DONT_COPY(myclass); 这样就不让拷贝了吗? 还有, 这个 '\' 符号放在这儿没有语法错误吗怎么?
  • #define BEGIN_INTERFACE_PART(localClass, baseClass) \ class X##localClass : public baseClass \ { \ public: \ STDMETHOD_(ULONG, AddRef)(); \ ... STDMETHOD_(ULONG, Release...宏定义里的 X##是什么意思
  • 自定义函数:宏函数(1)函数式宏定义的参数没有类型,预处理器只负责做形式上的替换,而不做参数类型检查,所以危险性高;但因为省去了函数的调用,返回,释放,所以效率比自定义函数高;(2)调用真正函数的代码和...
  • (1) ...以上各句话的意义是什么? (2) #define __OUTPROC_SERVER_ // To get the proper definition of trace #include "Util.h" #undef __OUTPROC_SERVER_ 以上各句话的意义是什么
  • 有一些类的定义如下: class ...问: DLLEXPORT 可以是什么关键词,请列出他们并说明一下他们的作用  谢谢! ------解决方案-------------------------------------------------------- DLLEXPORT不是关键词。
  • 原文地址:http://www.programmerinterview.com/index.php/c-cplusplus/inline-vs-macro/ 转载地址:... 这个问题在苹果公司(Apple)和直觉(Intuit)公司面试时都有问到。 ...内联函数和
  • 〇、什么是const(必须知道的事情)? 简单理解: const的目的就是定义一个“不会被修改的常量” 可以修饰: 变量、引用、指针,可以用于函数参数、成员函数修饰。成员变量。 作用: 使用const可以减少代码出错...
  • #define CC_SYNTHESIZE(varType, varName, funName)\ protected: varType varName;\ public: virtual varType get##funName(void) const { return varName; }\ public: virtual void set##funName(varType var){ ...
  • 什么要用宏定义函数

    千次阅读 2019-08-01 17:00:36
    在C程序中,可以用代码提高执行效率。代码本身不是函数,但使用起来象函数。 预处理器用复制代码的方式代替函数调用...使用代码最大的缺点容易出错,预处理器在复制代码时常常产生意想不到的边际效应。 ...
  • //这个40w和1000,无脑试了很多次才确定这个范围,各位大佬有什么简便方法请指教 if(kt%p[i]==0)//素数分解,可以参考王道第四章的分解素因数 { ansprime[anssize]=p[i]; ansnum[anssize]=0; while(kt%...
  • 宏定义

    2017-10-03 21:56:54
    什么是宏定义?1.不带参数的宏定义:宏定义又称为宏代换、宏替换,简称“宏” 格式: #define 标识符 字符串 #define PI 3.1415926 标识符就是所谓的符号常量,也称为“宏名” 预处理(预编译)工作也叫做...
  • 如上,第一行的PI右边一串数,虽然也字符,那为什么主函数里计算时PI等于数字1233而不是一串字符“1233”呢? 再,第一行PI右边可以是定义其他字符吗?如“abcd”?如果可以,那接下来怎么输出这串字符即...

空空如也

1 2 3 4 5 ... 20
收藏数 2,857
精华内容 1,142
关键字:

什么是宏定义