精华内容
参与话题
问答
  • #define

    2015-09-29 22:29:24
    1.无参宏定义的一般形式为:#define 标识符 字符串 #define M a+b #define MAXTIME 1000 #define MAXTIME 1000 #define MAX 100 其中的“#”表示这是一条预处理命令。凡是以“#”开头的均为预处理命令...

    1.无参宏定义的一般形式为:#define 标识符 字符串

    #define M a+b

    #define

    MAXTIME

    1000

    #define

    MAXTIME

    1000

    #define MAX 100

    其中的“#”表示这是一条预处理命令。凡是以“#”开头的均为预处理命令。“define”为宏定义命令。“标识符”为所定义的宏名。“字符串”可以是常数、表达式、格式串等。

    .宏定义不是说明或语句,在行末不必加分号,如加上分号则连分号也一起置换。

    宏定义其作用域为宏定义命令起到源程序结束。如要终止其作用域可使用#undef命令。


    2.带参宏定义的一般形式为:  #define 宏名(形参表) 字符串

    #define T(y) y*y+2*y+1

    3.头文件(.h)可以被头文件或C文件包含;重复包含(重复定义)由于头文件包含可以嵌套,那么C文件就有可能包含多次同一个头文件,就可能出现重复定义的问题的。 通过条件编译开关来避免重复包含(重复定义)

    展开全文
  • 1、#define 和typedef区别#define一般用于定义常量和语句宏定义,在编译的时候充当宏替换。当然也可以完成typedef的一小部分功能,记住只是一小部分。typedef 用来声明新类型名,目的是为了可读性以及可定义变量性。...

    1、#define 和typedef区别

    #define一般用于定义常量和语句宏定义,在编译的时候充当宏替换。当然也可以完成typedef的一小部分功能,记住只是一小部分。

    typedef 用来声明新类型名,目的是为了可读性以及可定义变量性。

    例子1:

    #define INT  int  //没有分号!!

    typedef int  INT;//记住typedef前面没有 #,以及该语句需要 ; 分号结束。

    这个例子中,INT num;这样语句都能实现,基本没有区别。

    例子2:

    #define pINT  int*

    typedef int* pINT;

    这个例子就有区别了,要定义int*a,*b;  用define实现的是 pINT a,b;替换之后 int* a,b;变成定义的是指针a,和变量b。而typedef 用法,pINT a,b;定义的是指针变量a和指针变量b。

    所以在声明新类型名的时候要用typedef,为了安全性。

     

    2、#define 、#if defined()、#ifndef、#ifdef、#else   #elseif  #endif

    a)#define 定义常量,如#define  DEBUG 说明DEBUG已有定义

    b)#if defined(DEBUG),如果只有一个条件,等同于#ifdef  DEBUG

         所以#if defined()常用于多条件限制的环境,多条件一般中间可以用“||、&& 、!”来形成多条件判断,如#if defined(EBUG)&& defined(WIN32)

         意思是当DEBUG 和WIN32都有定义的时候,才进入#if条件下的语句。

    c)#ifdef DEBUG 如果定义了DEBUG ,执行#ifdef 条件下的语句。其意图与#ifndef DEBUG

    相反,中间的n代表没有的意思,即如果没有定义。。。。

    d)#endif  配对#if 配对

     

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fangjuntan/archive/2009/06/07/4248861.aspx

     

    展开全文
  • #ifndef/#define/#endif使用详解

    万次阅读 多人点赞 2014-01-09 22:22:33
    想必很多人都看过“头文件中的 #ifndef/#define/#endif 防止该头文件被重复引用”。但是是否能理解“被重复引用”是什么意思?是不能在不同的两个文件中使用include来包含这个头文件吗?如果头文件被重复引用了,...

        想必很多人都看过“头文件中的 #ifndef/#define/#endif 防止该头文件被重复引用”。但是是否能理解“被重复引用”是什么意思?是不能在不同的两个文件中使用include来包含这个头文件吗?如果头文件被重复引用了,会产生什么后果?是不是所有的头文件中都要加入#ifndef/#define/#endif 这些代码?


        其实“被重复引用”是指一个头文件在同一个cpp文件中被include了多次,这种错误常常是由于include嵌套造成的。比如:存在a.h文件#include "c.h"而此时b.cpp文件导入了#include "a.h" 和#include "c.h"此时就会造成c.h重复引用。


    头文件被重复引用引起的后果:

    有些头文件重复引用只是增加了编译工作的工作量,不会引起太大的问题,仅仅是编译效率低一些,但是对于大工程而言编译效率低下那将是一件多么痛苦的事情。
    有些头文件重复包含,会引起错误,比如在头文件中定义了全局变量(虽然这种方式不被推荐,但确实是C规范允许的)这种会引起重复定义。


        是不是所有的头文件中都要加入#ifndef/#define/#endif 这些代码?

        答案:不是一定要加,但是不管怎样,用#ifnde xxx #define xxx #endif或者其他方式避免头文件重复包含,只有好处没有坏处。个人觉得培养一个好的编程习惯是学习编程的一个重要分支。


        下面给一个#ifndef/#define/#endif的格式:

        #ifndef A_H意思是"if not define a.h"  如果不存在a.h

        接着的语句应该#define A_H  就引入a.h

        最后一句应该写#endif   否则不需要引入

    --------------------------------------------------------------------------------------------------
    #ifndef GRAPHICS_H // 防止graphics.h被重复引用 
    #define GRAPHICS_H 


    #include <math.h> // 引用标准库的头文件 
    … 
    #include “header.h” // 引用非标准库的头文件 
    … 
    void Function1(…); // 全局函数声明 
    … 
    class Box // 类结构声明 

    … 
    }; 
    #endif
    --------------------------------------------------------------------------------------------------






    展开全文
  • #define#define(x)

    千次阅读 2013-07-23 14:30:44
    #define(x) 参数引用#x,##x,#@x理解   #define Conn(x,y) x##y #define ToChar(x) #@x #define ToString(x) #x x##y表示什么?表示x连接y,举例说: int n = Conn(123,456); 结果就是n=123456; char* str = ...

    1、#define(x) 参数引用#x,##x,#@x理解

    #define Conn(x,y)    x##y
    #define ToChar(x)    #@x

    #define ToString(x)  #x

    x##y表示什么?表示x连接y,举例说:
    int n = Conn(123,456); 结果就是n=123456;
    char* str = Conn("asdf", "adf")结果就是 str = "asdfadf";
    怎么样,很神奇吧

    再来看#@x,其实就是给x加上单引号,结果返回是一个const char。举例说:
    char a = ToChar(1);结果就是a='1';
    做个越界试验char a = ToChar(123);结果是a='3';
    但是如果你的参数超过四个字符,编译器就给给你报错了!error C2015: too many characters in constant :P

    最后看看#x,估计你也明白了,他是给x加双引号
    char* str = ToString(123132);就成了str="123132";

     

    2、#define 与 typedef作用域

    typedef:
    如果放在所有函数之外,它的作用域就是从它定义开始直到文件尾;
    如果放在某个函数内,定义域就是从定义开始直到该函数结尾;
    #define:
    不管是在某个函数内,还是在所有函数之外,作用域都是从定义开始直到整个文件结尾。

     

    展开全文
  • if语句中放一个#define

    2013-07-31 07:25:25
    开发一个iPhone应用,需要做宽屏检测,用到许多#define,想要放到if语句中,不知道怎么实现。 // Device and Widescreen Detection #define IS_WIDESCREEN ( fabs( ( double )[ [ UIScreen mainScreen ] ...
  • 请问: 1、 #ifndef EXTERN #define EXTERN #else #define EXTERN extern 2、 #indef XXX #define XXX extern #else #define XXX 这两主要用在什么场合?
  • #define总结-#define用法集锦

    千次阅读 2014-08-28 19:43:03
    Definition: The #define Directive ... You can use the #define directive to give a meaningful name to a constant in your program. The two forms of the syntax are:  Syntax  #define identifie
  • C语言#define定义问题

    2015-12-07 14:31:50
    #define DECL2 #define EXPORTSPEC typedef struct dost { int rfd; int wfd; // int connectionType; // remember whether this is a socket or a serial connection or a handle or whatever } _...
  • #define a&&#define a 1

    2013-07-15 19:03:38
    1.#define a 定义条件编译,相当于定义了一个条件 它的用法:一般用于条件编译,比如说有一段代码我在linux环境下是一种写法,在windows下又是一种写法。这个时候,我们就可以这样写 #define WINDOWS #if ...
  • 如题 6666666666666666666666666666666666666666666666666666666666666666666666666
  • 最近看com相关的资料,看到CCmdTarget实现com接口的时候,去读了一些宏的定义,在afxdisp.h头文件中 #define BEGIN_INTERFACE_PART(localClass, baseClass) / class X##localClass : public base...
  • Definition:The #define Directive You can use the #define directive to give a meaningful name to a constant in your program. The two forms of the syntax are: Syntax #define identifier to
  • #define vs const in Objective-C 问题: 我是一个 Objective-C 的新手。我有几个关于 const 和 预处理指令 #define 的问题。 第一,我发现不能用 #define 定义一个常量类型,为什么会这样? 第二,它们...
  • #define SIZEOF Xcode

    2012-09-28 06:18:51
    #define FINGER_SIZE20 如何在另一个UIView中修改FINGER_SIZE的值? 然后在SecondView和UIButton中: -(IBAction)changeSize{//*****} 其中changSize是在SecondView中, `#define FINGER_SIZE 20`在`...
  • 举例说明可以使用const代替#define以消除#define的不安全性 在C中习惯使用#define来定义常量, 例如 : #define N 100 实际上这种方法只是在预编译时进行了字符置换, 把程序中出现的标识符N 全部置换成100. 在预编译...
  • #define # ##使用

    千次阅读 2018-03-02 17:16:16
    #define DPRINTF(fmt, args...) printf(fmt, ##args) args...表示fmt之后的参数可以是零个或者多个。 二:#和##只能在宏定义中使用  #是把宏参数变为一个字符串,##是把两个宏参数连接在一起 1.    #include &...
  • #ifndef #define #endif的用法总结

    千次阅读 2018-06-18 22:40:59
    先说结论,这种用法的目的是为了防止重复定义,而不是所谓的重复声明。 其实这一点也是很容易理解的,头文件的定义本身就是为了引入“声明”的,如果不允许重复声明,那多个文件引用同一个...#define xxx unsigne...
  • #define #if #ifdef #ifndef 作用和区别

    千次阅读 2016-04-08 17:24:07
    本文简单来说明一下 #if #define #ifdef #ifndef的作用, 以及 #ifdef 和#ifndef 的区别.#define#define 用来进行定义#define kTabBar_Height 49.0f #define kString @"哈哈哈"#if#if 常量表达式 //程序段...
  • #ifndef #define #endif

    千次阅读 2015-03-24 00:24:36
    #ifndef #define #endif小小弄一下。
  • #include #define

    2018-08-10 09:52:04
    #include<set> #include<map> #include<list> #include<queue> #include<deque> #include<cmath> #include<stack> #include<cstdio> #include<...#inc...
  • const是一个C语言的关键字,限定一个变量不允许被改变,产生静态作用。在一定程度上可以提高程序的安全性和可靠性。const修饰的类型是常类型,常类型的变量或对象的值是不能被更新的。 一....(1)定义const常量,常量...
  • #define用法

    千次阅读 2007-09-07 15:47:00
    1.简单的define定义#define MAXTIME 1000一个简单的MAXTIME就定义好了,它代表1000,如果在程序里面写if(i编译器在处理这个代码之前会对MAXTIME进行处理替换为1000。这样的定义看起来类似于普通的常量定义CONST,但...
  • C语言 宏定义一大堆, 刚学都会迷糊如#define sqrt(x) (x*x)与#define sqrt(x) x*x 的区别,前者为正确定义,后者将不能计算出正确的平方#include #define sqrt(x) x*xvoid main(void){ int x=3; printf("%d", 10/...

空空如也

1 2 3 4 5 ... 20
收藏数 309,120
精华内容 123,648
关键字:

#define