首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

#ifndef#define#endif使用详解

想必很多人都看过“头文件中的 #ifndef/#define/#endif 防止该头文件被重复引用”。但是是否能理解“被重复引用”是什么意思?...是不能在不同的两个文件中使用include来包含这个头文件吗?如果头文件被重复引用了,会产生什么后果?是不是所有的头文件中都要加入#ifndef/#define/#endif 这些代码?...是不是所有的头文件中都要加入#ifndef/#define/#endif 这些代码?...答案:不是一定要加,但是不管怎样,用#ifnde xxx #define xxx#endif或者其他方式避免头文件重复包含,只有好处没有坏处。个人觉得培养一个好的编程习惯是学习编程的一个重要分支。...下面给一个#ifndef/#define/#endif的格式: #ifndef A_H意思是"if not define a.h" 如果不存在a.h 接着的语句应该#define A_H 就引入

1.1K30

如何正确使用const(常量),define(宏)

前言 在开发中,也许我们会经常使用到宏定义,或者用const修饰一些数据类型,经常有开发者不知道怎么正确使用,导致项目中乱用宏定义与const修饰符。...本篇主要介绍在开发中怎么正确使用const与define(宏定义) 当我们想定义全局共用的一些数据时,比如通知名字,动画时长等等,我们可以用宏、常量、变量: 宏: // 注意后面不需要带符号...甚至有相同后缀的字符串也可以优化,你可以使用GCC编译测试,Hello world与world两个字符串,只存储前面一个。...取的时候只需要给前面和中间的地址,如果是整型、浮点型会有多分拷贝,但这些数写在指令中,占的只是代码片段而且,大量使用宏会导致二进制文件变大。...在预处理阶段进行替换,const常量在编译阶段使用define不做类型检查,只进行替换,const常量有数据类型,会执行类型检查; define不能调试,const常量可以调试; define定义的常量在替换后运行过程中

2.3K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何正确使用const(常量),define(宏)

    前言 在开发中,也许我们会经常使用到宏定义,或者用const修饰一些数据类型,经常有开发者不知道怎么正确使用,导致项目中乱用宏定义与const修饰符。...本篇主要介绍在开发中怎么正确使用const与define(宏定义) 当我们想定义全局共用的一些数据时,比如通知名字,动画时长等等,我们可以用宏、常量、变量: 宏: // 注意后面不需要带符号...甚至有相同后缀的字符串也可以优化,你可以使用GCC编译测试,Hello world与world两个字符串,只存储前面一个。...取的时候只需要给前面和中间的地址,如果是整型、浮点型会有多分拷贝,但这些数写在指令中,占的只是代码片段而且,大量使用宏会导致二进制文件变大。...在预处理阶段进行替换,const常量在编译阶段使用define不做类型检查,只进行替换,const常量有数据类型,会执行类型检查; define不能调试,const常量可以调试; define定义的常量在替换后运行过程中

    87620

    iOS学习——iOS 宏(define)与常量(const)的正确使用

    概述   在iOS开发中,经常用到宏定义,或用const修饰一些数据类型,经常有开发者不知怎么正确使用,导致项目中乱用宏与const修饰。你能区分下面的吗?知道什么时候用吗?...或者你会告诉我你对警告十分敏感,不会放过他的,但是记住你不是一个人在写代码,可能在别人的页面他给你重新定义了你的define,给你挖了一个大坑,还找不着.........   ...所以还是尽量使用const,看苹果api也是使用常量多点,如下图: ?...更加重要的是用这种方法定义的常量是带有类型信息的,而这点则是define不具备的。...//在.m文件中这样定义,则该常量只能在当前.m文件中使用,并且不能再.h文件中使用extern进行外部申明使用 static NSString * const kUserName = @"userName

    1.8K30

    只听说过CSS in JS怎么还有JS in CSS?

    本文由作者 Menndy 授权原创发布 CSS in JS CSS in JS是一种解决css问题想法的集合,而不是一个指定的库。...将css放在js中使我们更方便的使用js的变量、模块化、tree-shaking。还解决了css中的一些问题,譬如:更方便解决基于状态的样式,更容易追溯依赖关系,生成唯一的选择器来锁定作用域。...JS in CSS又是什么 在上面我们提到CSS in JS就是把CSS写在JavaScript中,那么JS in CSS我们可以推断出就是可以在CSS中使用JavaScript脚本,如下所示。...我们还可以使用+使syntax属性支持一个或多个类型,也可以使用|来分割。...('script2.js'), ]).then(results => {}); registerDemoWorklet('name', class { // 每个Worklet可以定义要使用的不同函数

    6.7K40

    js怎么动态加载js文件(JavaScript性能优化篇)转

    下面介绍一种JS代码优化的一个小技巧,通过动态加载引入js外部文件来提高网页加载速度 【基本优化】 将所有需要的标签都放在之前,确保脚本执行之前完成页面渲染而不会造成页面堵塞问题...【合并JS代码,尽可能少的使用script标签】 最常见的方式就是带代码写入一个js文件中,让页面只使用一次标签来引入 ? 3....该原理实现的也有很多不错的js类库可以使用,如LazyLoad.js,支持数组的形式引入,打开浏览器在network中可看到js是同步加载的 ? ? 7....【XHR加载】 使用ajax方式加载 代码: var xhr = new XMLHttpRequest; xhr.open('get','file.js',true); xhr.onreadystatechange...【总结】 最好的方式还是使用动态创建script的方式加载,当动态创建script,浏览器会分配一个线程去下载src指向的资源,多个script也是同步下载的 (adsbygoogle

    19.6K12

    新手怎么JS?JavaScript基础入门

    而另外一种写法是将js代码完全的写在一个后缀名为.js的文件中。在需要的html文件中通过script标签引入。 <!...文件 js语句 js当中的语句表示js向宿主环境发送的命令。...一般情况下,注释的内容可以包含很多,例如参数信息,代码功能、使用方式等等。 在js中,注释分为两种,一种是单行注释,一种是多行注释。 单行注释通过//表示,一般写在语句的后面或者语句的上方。.../* 这里是多行注释... */ 无论你是一个js新人,还是一个成熟的老程序员,合理的应用注释都是一个非常好的习惯。 直接量 在js中,直接使用的量,我们称之为叫做直接量。...弹窗 在js中,如果你的代码运行环境是在浏览器当中,那么就可以使用浏览器给我们提供的弹窗。

    2.5K70

    JS代码是怎么被执行的

    JS代码是怎么被执行的 我们看到的JS都是在浏览器中或者在Node环境中运行的对吧,那不论是浏览器还是Node,负责编译并且解释执行JS代码的都是一个叫做V8的东西,所以这个问题其实就是V8引擎是怎么去运行...JavaScript的,而js和C/C++/Go/Rust这类静态编译的语言不同,这些静态编译的语言通过编译器把代码变成机器码,然后在机器上运行,js呢在编译后会生成字节码,然后在v8的虚拟机上运行字节码...,java和python也有自己的虚拟机实现,这些语言都将生成的字节码放在虚拟机上运行,相比于直接以机器码运行的语言,这些语言在损失了性能的同时又获得了更多功能上的遍历,然后我们回到V8引擎是如何执行JS...实际上呢在现代的编程语言中解释型语言像JS为了功能上的需要,会引入JIT这样的技术 JIT (Just-In-Time)技术 通常,如果有一段第一次执行的字节码,解释器 Ignition 会逐条解释执行

    3.1K40

    js 怎么使用正则表达式-JavaScript 正则表达式

    练习辅助 jsbin   图文并茂   什么是正则表达式    使用单个字符串来描述、匹配一系列符合某个句法规则的字符串   说简单了是按照某种规则去匹配符合条件的字符串   RegExp对象...replace(/[0-9]/g, 'A') // "AAAA-AA-AA" '2016-09-12'.replace(/[0-9-]/g, 'A') // "AAAAAAAAAA"   JS...\w+\d*\d{3}\w{3,5}\d{3,}   JS正则贪婪模式与非贪婪模式贪婪模式   尽可能多的匹配   非贪婪模式   让正则表达式尽可能少的匹配,也是说一旦成功匹配不再继续尝试就是非贪婪模式.../g) // (3) ["123", "456", "789"]   分组分组   使用 () 可以达到分组的功能js 怎么使用正则表达式,使量词作用域分组   (Byron){3}   ...\d)/g, 'X') // "aX*3XXX"   JS对象属性   global:是否全文搜索js 怎么使用正则表达式,默认false   ignore case:是否大小写敏感,默认是 false

    2.9K30

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券