正在入门驱动编程,遇到一个小问题,如下详细解释. 原文链接:#pragma once 与 #ifndef 解析 http://www.cnblogs.com/hokyhu/archive/2009/03/30/1425604.html 为了避免同一个文件被include多次,C/C++中有两种方式,一种是#ifndef方式,一种是#pragma once方式.在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别.     方式一: #ifndef __SOMEF…
例如 为了避免同一个文件被include多次,C/C++中有两种方式,一种是#ifndef方式,一种是#pragma once方式.在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别.    方式一: #ifndef __SOMEFILE_H__    #define __SOMEFILE_H__    ... ... // 声明.定义语句    #endif 方式二: #pragma once    ... ... // 声明.定义语句 #ifndef的方式…
转自:http://www.cnblogs.com/hokyhu/archive/2009/03/30/1425604.html 为了避免同一个文件被include多次,C/C++中有两种方式,一种是#ifndef方式,一种是#pragma once方式.在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别.     方式一: #ifndef __SOMEFILE_H__     #define __SOMEFILE_H__     ... ... // 声明.…
本篇随笔为转载,原贴地址:#pragma once与#ifndef解析 为了避免同一个文件被include多次,C/C++中有两种方式,一种是#ifndef方式,一种是#pragma once方式.在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别.    方式一: #ifndef __SOMEFILE_H__    #define __SOMEFILE_H__    ... ... // 声明.定义语句    #endif 方式二: #pragma once…
最后编辑: 2019-11-20 #pragma once 是一个非标准但被广泛支持的预处理符号, 其主要作用是防止文件重复引入问题. 在头文件中,可以定义 #pragma once 或者 #ifndef, 本文比较以下这两者区别. #pragma once #ifndef __ARCH_ARM_SRC_ARTOSYN_AR_UART_H #define __ARCH_ARM_SRC_ARTOSYN_AR_UART_H #endif 共同点 防止文件重复 include 在以前的一些编译系统中,…
#pragma once 与 #ifndef 的作用 (1)在C/C++中,在使用预编译指令#include的时候,为了防止重复引用造成二义性. (2)在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别. #pragma once 与 #ifndef 的用法 #pragma once #pragma once #ifndef #ifndef _CODE_BLOCK #define _CODE_BLOCK // code ... #endif // _CODE_…
C++中防止头文件被多次include 的常见方式有: 1) 用#ifndef ...  #define ... #endif  宏 #ifndef __MYHEADER_H__#define __MYHEADER_H__ // Here is my class ... #endif 2) 用 #pragma once #pragma once // Here is my class ... 建议使用 #pragma once ,原因: 1)  代码简洁,维护性比较好. #pragma once…
1. #pragma once用来防止某个头文件被多次include: #ifndef,#define,#endif用来防止某个宏被多次定义.   2. #pragma once是编译相关,就是说这个编译系统上能用,但在其他编译系统不一定可以,也就是说移植性差,不过现在基本上已经是每个编译器都有这个定义了: #ifndef,#define,#endif这个是C++语言相关,这是C++语言中的宏定义,通过宏定义避免文件多次编译.所以在所有支持C++语言的编译器上都是有效的,如果写的程序要跨平台,最…
  为了避免同一个文件被include多次 1   #ifndef方式2   #pragma once方式 在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别.    方式一:     #ifndef __SOMEFILE_H__    #define __SOMEFILE_H__    ... ... // 一些声明语句    #endif     方式二:     #pragma once    ... ... // 一些声明语句     #ifndef的…
#pragma once 这是一个比较常用的指令,只要在头文件的最开始加入这条指令就能够保证头文件被编译一次 #pragma once用来防止某个头文件被多次include,#ifndef,#define,#endif用来防止某个宏被多次定义. #pragma once是编译相关,就是说这个编译系统上能用,但在其他编译系统不一定可以,也就是说移植性差,不过现在基本上已经是每个编译器都有这个定义了. #ifndef,#define,#endif这个是C++语言相关,这是C++语言中的宏定义,通过宏…
为了避免同一个文件被include多次,我们可以通过以下两种方式来进行宏定义: 1. #ifndef方式2. #pragma once方式 在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别. 方式一: #ifndef __SOMEFILE_H__ #define __SOMEFILE_H__ ... ... // 一些声明语句 #endif   方式二: #pragma once ... ... // 一些声明语句 #ifndef 的方式依赖于宏名字不能冲突…
为了防止头文件被重复包含,主要有两种方式: 方式一:使用 #ifndef #ifndef OPTIONAL_TEST_H #define OPTIONAL_TEST_H //............... #endif //OPTIONAL_TEST_H 该方式是c++标准支持,使用宏的名字来区分文件.优点是C++标准,支持跨平台.缺点是宏的名字冲突了,不好找到原因. 方式二:使用#pragma once #pragma once 该方式是按照物理文件名来区分文件.不会有宏定义冲突的问题,但是属…
#pragma once:保证头文件只被编译一次.这种方式,是微软编译器独有的,也是后来才有的,所以知道的人并不是很多,用的人也不是很多,因为他不支持跨平台.如果你想写跨平台的代码,最好使用上一种.这是一种由编译器提供支持的方式,防止同一文件的二次编译,这里的同一文件指的是物理文件. #ifndef #define //code #endif 这个是C++语言相关,这是C++语言中的宏定义,通过宏定义避免文件多次编译.所以在所有支持C++语言的编译器上都是有效的,如果写的程序要跨平台,最好使用这…
都是为了避免同一个头文件被包含多次.在编译器对这两种方式都支持的情况下,区别很小. 方式一: #pragma once ...//这里放声明语句 方式二: #ifndef 宏名 #def 宏名 ...//这里放声明语句 #endif…
C语言中的头文件只是简单的复制粘贴. C语言中变量.函数.结构体的定义和声明两个过程是分离的.声明通常放在头文件中,为了防止重复声明,需要保证头文件中的内容在构建obj文件时只被包含一次.这可以通过#ifndef宏定义和#pragma once两种方式实现. #ifndef宏定义的方式: #ifndef SOME_UNIQUE_NAME_HERE #define SOME_UNIQUE_NAME_HERE // contents of the header ... #endif // SOME_…
[1]#pragma once这个宏有什么作用? 为了避免同一个头文件被包含(include)多次,C/C++中有两种宏实现方式:一种是#ifndef方式:另一种是#pragma once方式.在能够支持这两种方式的编译器上,二者并没有太大的区别.但两者仍然有一些细微的区别. //方式一: #ifndef __SOMEFILE_H__ #define __SOMEFILE_H__ ... ... // 声明.定义语句 #endif //方式二: #pragma once ... ... // 声…
两者功能一样,防止重复包含被多次编译.建议头文件加入#pragma once C++头文件开头的两句与结尾的一句#ifndef <标识>#define <标识>类代码#endif为了防止头文件的重复包含和编译,例如a.h中有#include "c.h",b.cpp文件导入了#include "a.h" 和#include "c.h"此时就会造成c.h重复引用.标识名一般写成头文件名字的全大写_H…
为了避免同一个头文件被多重包含/重复包含,有两种方式: 方式一: #ifndef XXX #define XXX ... ...  //声明语句 #endif  //XXX 方式二: #pragma once ... ...//声明语句 在能够支持这两种方式的编译器上面,两者没有太大区别,但任存在一些细微差别. 方式一---依赖于宏名字不能冲突,这不光可以保证同一个文件不会被包含多次,也能保证内容完全相同的两个文件不会被不小心同时包含. 缺点:缺点就是如果不同头文件的宏名不小心“撞车”,可能就会…
先看知识点总结 一.序列操作符x in s 如果x是列表s的元素,返回True,否则Falses + t 连接两个序列s和ts*n或者n*s 将序列s复制n次s[i] 返回s中第i元素s[i:j]或s[i:j: k] 切片,返回序列s中第i到j-1以k为步长的元素子序列12345函数len(s) 返回序列的长度min(s) 返回序列的最小值max(s) 返回序列的最大值s.index或s.Index(x,i,j) 索引从i到j-1中第一次出现x的位置s.count(x) 返回x在s中出现的次数l…
GDataXMLDocument-XML解析 #pragma mark - ======== Dom XML解析 - (IBAction)domParserActionXML_Document:(id)sender { // 第一步 引入动态库 // 1 获取文件路径 NSString *Path = [[NSBundle mainBundle] pathForResource:@"StudentIfor_xml" ofType:@"txt"]; // 2.根据路经…
刚开始学习程序的时候,老师就说过用#ifndef 这样的结构防止头文件被重复包含,所以就没有关心那么多.今天可能由于自家底层系统缘故,陈工说最好还是用#pragma once ,于是查了下两个的区别,看了下大神们的博客,所以在此给自己记录下. 两种方式的使用 其一: #ifndef _AICHANNELSET_H_ #define _AICHANNELSET_H_ 函数声明 #endif  其二: #pragma once 函数声明 第一点ifndef是通过判断宏是否被定义,来决定该文件是否需要…
在所有的预处理指令中,#pragma指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#pragma指令对每个 编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征.依据定义,编译指示是机器或操作系统专有的,且对于每个 编译器都是不同的.其格式一般为:#pragma para,其中para为参数,下面来看一些常用的参数. (Each   implementation   of   C   and   C++   suppor…
先将第三方文件拖进工程 JSONKit.h和JSONKit.m 然后设置在ARC工程中添加MRC文件,如下图所示 #import "ViewController.h" #import "Student.h" #import "GDataXMLNode.h" #import "JSONKit.h" @interface ViewController () <NSXMLParserDelegate> /** * 存储数…
1. 解析的基本的概念 解析:从事先规定好的格式中提取数据 解析前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照格式获取数据 iOS开发常见的解析:XML解析.JOSN解析 2. XML数据结构 1> 概述 XML:Extensible markup language(可扩展标记语言),主流数据格式之一,可以用来存储和传输数据. 2> XML数据格式的功能 数据交换 内容管理 用作配置文件 3> XML数据格式的语法 声明 节点使用一对标签表示:起始和结束标签. 根节点…
//解析:将特定数据格式(如:xml,json)中提取出来所需的内容 //SAX: Simply API for XML, xml解析的一种方式,逐行解析,读一行内容,取一行内容,速度慢,占用内存小,如果内容格式不对,不影响之前内容的读取     //iOS采取SAX解析方法 一  SAX      <!-- XML:Extensible Markup Language,可扩展标记语言,用于存储数据,以树的形式存储,每一个节点都有开始标签和结束标签,内容存放于开始标签和结束标签中间 --> &…
JSON数据 {"videos":[{"id":1,"image":"resources/images/minion_01.png","length":10,"name":"小黄人 第01部","url":"resources/videos/minion_01.mp4"},{"id":2,"imag…
1. #error 的用法 (1)#error 是一种预编译器指示字,用于生成一个编译错误消息 (2)用法:#error message //注意:message 不需要用双引号包围 (3)#error 编译指示字用于自定义程序员特有的编译错误消息.类似的,#warning 用于生成编译警告消息 (4)#error 可用于提示编译条件是否满足.编译过程中的任何错误意味着无法生成最终的可执行程序 2. #line 的用法 (1)#line 用于强制指定新的行号和编译文件名,并对源程序的代码重新编号…
●  什么是XML ●  全称是Extensible Markup Language,译作“可扩展标记语言” ●  跟JSON一样,也是常用的一种用于交互的数据格式 ●  一般也叫XML文档(XML Document) 五.XML ====================总结============================1.语法1> 文档声明<?xml version="1.0" encoding="UTF-8" ?> 2> 元素3…
在头文件中用这种写法就是为了该头文件被重复包含时不会出现符合重定义的错误. 效果等同于     #ifndef __xxx__     #define __xxx__     ...    #endif // __xxx__ 详细如下: #pragma once和ifndef使用异同为了避免同一个文件被include多次1   #ifndef方式2   #pragma once方式在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别.       方式一: #i…
#pragma是一种预处理指令,作用是设定编译器的状态或者是指示编译器完成一些特定的动作. 其格式一般为:#pragma Para.其中Para为参数.下面是一些常见用法. 1.message ——在编译信息输出窗口中输出相应信息. 例:#ifdef _X86 #pragma message("_X86 macro activated!") #endif 2.once ——保证头文件只被编译一次 #pragma once与#ifndef / #define / endif 区别: 1)…