其三方使用,宏的使用

以下是进阶篇的剧情:面向对象的设计标准,自动加载类,类型提示,traits,命名空间,spl的利用,反射的利用,php常用设计方式

其三方的行使,第壹方应用

1. MMDrawerController  抽屉效果
2.SVProgressHUD  透明指示层
3.SDCycleScrollView 无限轮播器
4.SDWebImage 异步图片加载
5.RESideMenu 抽屉效果
6.AFNetworking 网络请求
7.MJRefresh tableView上下拉刷新
8.MJExtension json转模型
9.Masonry 布局适配框架
10.UMengSocial 友盟SDK
11.TPKeyboardAvoiding 键盘与输入框的位置修改
12.XYPieChart 饼状图
13.UUChartView 折线图
14.IQKeyboardManager 输入框在键盘弹出的时候处理显示位置

1. MMDrawerController
抽屉效果 2.SVProgressHUD 透明提示层 3.SDCycleScrollView 极端轮播器
4.SDWebImage 异步图片加载 5.RESide…

宏的使用,使用

2. npm 的使用,npm使用

NPM是会同NodeJS一起安装的包管理工科具,能化解NodeJS代码铺排上的诸多难点,常见的应用情状有以下二种:

  • 允许用户从NPM服务器下载外人编写的第②方包到地点使用。
  • 同意用户从NPM服务器下载并设置别人编写的指令行程序到当地使用。
  • 同意用户将协调编写的包或指令行程序上盛传NPM服务器供外人接纳。

出于新版的nodejs已经济合营并了npm,所此前边npm也一并安装好了。同样能够通过输入
“npm -v” 来测试是还是不是中标安装。命令如下,出现版本提醒表示安装成功:

$ npm -v
2.3.0

 ==============================================

前言

宏在C/C++中有挺大的效益。

关键词

 

动用 npm 命令安装模块

npm 安装 Node.js 模块语法格式如下:

$ npm install <Module Name>

以下实例,我们应用 npm 命令安装常用的 Node.js web框架模块 express:

$ npm install express

安装好今后,express 包就放在了工程目录下的 node_其三方使用,宏的使用。modules
目录中,由此在代码中只要求经过 require(‘express’)
的方式就好,无需内定第①方包路径。

var express = require('express');

 

宏的两种效率

1,定义常量

2,定义表明式

3,简化繁琐的代码

4,作为标识符

5,可变参数

6,#和##的使用

 

1,定义常量

譬如定义PI的值能够通过宏来定义

#define PI    3.1415927

2,定义表明式

#define MAX(a, b)    (a>b?a:b)

3,简化繁琐的代码

以此能够简化一些重复的代码,比如证明函数,定义类的分子变量,可能是简化数十次编写制定重复性高的代码。

简化函数证明,在函数注脚的时候有点需求的严重性字须要写,但是不少时候都是一律的,能够通过宏来简化

定义线程函数

unsigned __stdcall ThreadFunc(void* pArguments)

能够经过宏简化为

#define THREAD_FUNC(func)    unsigned __stdcall func(void* pArguments)

THREAD_FUNC(ThreadFunc)
{
    printf("hello\n");
    return 0;
}

 

定义类的成员变量,或者供给定义成员变量的get,set函数,这时候能够经过宏来简化这些历程。

#define PROP_DECL(ClassName, Prop)    \
    public: ClassName Get##Prop(void){return m_##Prop;}\
    public: void Set##Prop(ClassName vl){m_##Prop = vl;}\
    private: ClassName m_##Prop;

class CTestObj
{
    PROP_DECL(int, Count)
public:
    CTestObj();
    ~CTestObj();
};

地点的代码通过预编译之后就会生出GetCount和SetCount四个函数和m_Count私有成员变量。

简化繁琐代码,在内部存款和储蓄器释放的时候只怕必要把指针,供给两行代码

WA *pa = new WA(c);
delete pa;
pa = NULL;

能够采用宏来简化这一个进程

#define MEM_FREE(x)    do \
{\
    delete x;\
    x = NULL;\
} while (0)

WA *pa = new WA(c);
MEM_FREE(pa);

在ATL,MFC中山大学量选择到宏来简化代码。

4,作为标识

作为标识的宏在多量的行使

#ifndef __TMP_H__    //判断是否已经定义宏,如果没有,将会执行下面代码,用于避免包含文件的时候重复包含
#define __TMP_H__    //定义宏,这样第二次包含这个头文件的时候就不会执行下面的定义

//判断是否是UNICODE,用于定义TTCHAR的字符类型。
#ifdef UNICODE        
typedef wchar_t TTCHAR;
#else
typedef char TTCHAR;
#endif

//用于标识的宏定义
#define    IN
#define OUT

#endif // !__TMP_H__

 

4,可变参数

宏能够有参数,而且参数数量能够不定

#define LOG(format, ...)    printf(format, __VA_ARGS__)

LOG("hello, %d, %s\n", 10, "nihao");

5,#和##的使用

#的效益是把宏参数变成字符串

#define STR(s)     #s
printf(STR(hello));           // 输出字符串"hello"

##的机能是把宏参数粘贴起来例子能够参考一下第①点的代码。

 

利用宏须求小心的点

宏是在预处理进度中展开存文本替换,预处理进程中不会对宏实行其余的语法检查和测试,却个括号,少个子集团都不会管,所以只怕会并发有的很想得到的谬误,所以要慎用。

1,算法优先难点

三个乘法的宏

#define MUL(x, y)    (x * y)

MUL(2,3)的时候从不难题,倘诺是MUL(1+2,
3)的时候就出事了,宏会替换到1+2*3,跟预想的结果就不均等了。

此刻就需求把宏定义改成

#define MUL(x, y) (x) * (y)

2,分号吞噬难点

#define SKIP_SPACES(p, limit)  \
     { char *lim = (limit);         \
       while (p < lim) {            \
         if (*p++ != ' ') {         \
           p--; break; }}}

倘诺下面的代码放在判断语句中选用

if (*p != 0)
   SKIP_SPACES (p, lim);
else ...

编写翻译器会报错,else此前要有if,能够透过下边代码来消除

#define SKIP_SPACES(p, limit)     \
     do { char *lim = (limit);         \
          while (p < lim) {            \
            if (*p++ != ' ') {         \
              p--; break; }}}          \
     while (0)

那种措施在linux中山大学量使用到

 

3,重复调用

#define min(X, Y)  ((X) < (Y) ? (X) : (Y))

比方调用时如此

int x = 1;
int y = 2;
min(x++, y);

展开后x++会被调用五次,那种格局要防止。

 

4,对本身的递归引用

有如下宏定义:

#define foo (4 + foo)

按前面包车型地铁明白,(4 + foo)会进展成(4 + (4 +
foo),然后直接开始展览下去,直至内部存储器耗尽。可是,预处理器选取的方针是只实行3遍。相当于说,foo只会进行成(4

  • foo),而进展之后foo的意义就要依据上下文来显明了。

对于以下的穿插引用,宏体也只会进展3遍。

#define x (4 + y)
#define y (2 * x)

x展开成(4 + y) -> (4 + (2 * x)),y展开成(2 * x) -> (2 * (4 +
y))。

留神,那是极不推荐的写法,程序可读性极差。

 

5,宏参数预处理

宏参数中若包罗此外的宏,那么宏参数在被代入到宏体从前会做二遍完全的进展,除非宏体中隐含#或##。

有如下宏定义:

#define AFTERX(x) X_ ## x
#define XAFTERX(x) AFTERX(x)
#define TABLESIZE 1024
#define BUFSIZE TABLESIZE

AFTE奥迪Q5X(BUFSIZE)会被开始展览成X_BUFSIZE。因为宏体中包蕴##,宏参数直接代入宏体。
XAFTE哈弗X(BUFSIZE)会被进行成X_1024。因为XAFTE纳瓦拉X(x)的宏体是AFTE汉兰达X(x),并没有#或##,所以BUFSIZE在代入前会被完全展开成1024,然后才代入宏体,变成X_1024。

 

宏实在预处理进度中被沟通掉的,所以在事实上的编写翻译进度中,不会出现宏,或然宏的变量名。

 

参考:

前言 宏在C/C++中有挺大的效果。
关键词 宏的二种效应 1,定义常量 2,定义表达式 3,简化繁琐的代码
4,作为标识符 5,可…

全局安装与本地安装

npm
的包安装分为地面安装(local)、全局安装(global)二种,从敲的命令行来看,差距只是有没有-g而已,比如

npm install express          # 本地安装
npm install express -g   # 全局安装

假如现身以下错误:

npm err! Error: connect ECONNREFUSED 127.0.0.1:8087

消除办法为:

$ npm config set proxy null

本土安装

    1. 将安装包放在 ./node_modules 下(运转 npm
      命令时所在的目录),借使没有 node_modules 目录,会在最近施行 npm
      命令的目录下生成 node_modules 目录。
    1. 能够因此 require() 来引入本地安装的包。

大局安装

    1. 将安装包放在 /usr/local 下。
    1. 能够向来在指令行里使用。
    1. 不能由此 require() 来引入本地安装的包。

接下去大家使用全局方式安装 express

$ npm install express -g

卸载模块

我们得以利用以下命令来卸载 Node.js 模块。

$ npm uninstall express

 

美高梅开户网址,卸载后,你能够到 /node_modules/
目录下查看包是或不是还设有,大概应用以下命令查看:

$ npm ls

立异模块

作者们能够利用以下命令更新模块:

$ npm update express

查找模块

动用以下来搜索模块:

$ npm search express

NPM 常用命令

 
  • NPM提供了众多命令,例如installpublish,使用npm help可查看全部命令。

  • 使用npm help <command>可查看某条命令的详实支持,例如npm help install

  • package.json四处目录下使用npm install . -g可先在地方安装当前下令行程序,可用来发表前的地头测试。

  • 使用npm update <package>能够把当前目录下node_modules子目录里边的应和模块更新至最新版本。

  • 使用npm update <package> -g能够把全局安装的呼应命令行程序更新至最新版。

  • 使用npm cache clear能够清空NPM本地缓存,用于对付使用相同版本号公布新本子代码的人。

  • 使用npm unpublish <package>@<version>能够打消发表温馨宣布过的某部版本代码。

 

 

 

. npm 的运用,npm使用
NPM是及其NodeJS一起安装的包管理工科具,能消除NodeJS代码安排上的广大标题,常见的选择处境有以下三种:
允许用户从…

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图