精华内容
下载资源
问答
  • C语言的井号(#)特殊用法(#define)
    2021-05-19 20:11:19

    一:特殊的字符串宏

    [cpp]

    #define A(x) T_##x

    #define B(x) #@x

    #define C(x) #x

    我们假设x=1, 则上面的宏定义会被解释成以下的样子

    A(1)------>T_1

    B(1)------>'1'

    C(1)------>"1"

    这些主要用于一些字符串处理函数和参数命名上,并不复杂,不过知者甚少

    二:屏蔽无用参数警告

    [cpp]

    #define UNUSED_PARAM(p)    ((void)p)

    这个用来屏蔽无效参数的

    比如

    [cpp] view plaincopy

    void a(int x1, int x2)

    {

    // do nothing

    }

    这样会弹出警告,x1,x2是无效的参数

    但是,写成这样,就没关系了

    [cpp]

    void a(int x1, int x2)

    {

    UNUSED_PARAM(x1);

    UNUSED_PARAM(x2);

    }

    宏的更常见用法我就不写了,比如头文件的保卫宏,版本定义宏,灵活使用确实事半功倍。

    文章来源:http://www.2cto.com/kf/201208/148095.html

    更多相关内容
  • struts2 (# % $)井号,百分号,美圆号的含义和使用举例。struts2 OGNL,struts2 表达式语言,OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言。本文提要:(1)Struts2 #,表达式语言...

    struts2 (# % $)井号,百分号,美圆号的含义和使用举例。struts2 OGNL,struts2 表达式语言,OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言。

    本文提要:

    (1)Struts2 #,表达式语言的好处;

    (2)Struts2 (#  % $)井号,百分号,美圆号的各个用法。

    一、表达式语言主要有以下几大好处

    1. 避免(MyType) request.getAttribute()和myBean.getMyProperty()之类的语句,使页面更简洁;       2. 支持运算符(如+-*/),比普通的标志具有更高的自由度和更强的功能;

    3. 简单明了地表达代码逻辑,使用代码更可读与便于维护。

    二、Struts2 (#  % $)井号,百分号,美圆号的各个用法

    (1)“#”主要有三种用途:

    1. 访问OGNL上下文和Action上下文,#相当于ActionContext.getContext();下表有几个ActionContext中有用的属性: 名称   作用 例子 parameters    包含当前HTTP请求参数的Map    #parameters.id[0]作用相当于request.getParameter(“id”) request   包含当前HttpServletRequest的属性(attribute)的Map    #request.userName相当于request.getAttribute(“userName”) session   包含当前HttpSession的属性(attribute)的Map   #session.userName相当于session.getAttribute(“userName”) application   包含当前应用的ServletContext的属性(attribute)的Map     #application.userName相当于application.getAttribute(“userName”) attr 用于按request > session > application顺序访问其属性(attribute)    #attr.userName相当于按顺序在以上三个范围(scope)内读取userName属性,直到找到为止 2. 用于过滤和投影(projecting)集合,如books.{?#this.price<100}; 3. 构造Map,如#{‘foo1′:’bar1′, ‘foo2′:’bar2′}。       (2)“%”的用途是在标志的属性为字符串类型时,计算OGNL表达式的值。

    例如在Ognl.jsp中加入以下代码:


    < h3>%的用途 < p> < p>

    (3)“$”有两个主要的用途 : 1. 用于在国际化资源文件中,引用OGNL表达式,例子请参考《在Struts 2.0中国际化(i18n)您的应用程序》 2. 在Struts 2配置文件中,引用OGNL表达式,如 ListPhotos.action?albumId=${albumId} < /action>

    ###############2010-01-14日更新################

    struts2中的OGNL上下文 struts2对OGNL上下文的概念又做了进一步扩充,在struts2中,OGNL上下文通常如下所示:

    |–request | |–application | context map—|–OgnlValueStack(root) [ user, action, OgnlUtil, ... ] | |–session | |–attr | |–parameters

    我们可以使用”#requet”访问HttpServletRequest对象, “#session”访问HttpSession对象,但请注意”根对象”是什么?是ValueStack! 那么ValueStack是什么?值栈。也就是一组对象的堆栈。也就是说,在struts2中,根对象不是我们通常的一个对象,而是一组对象。我们可以push新的对象到值栈中,也可以弹出值栈的栈顶对象。如上图所示,假设我们将user对象push到值栈中,那么如下的表达式将与之前我们见过的表达式 一样,具有相同的结果: Java代码

    name // 取用户的姓名 age // 取用户年龄 birthday // 取用户生日 customer.name // 取用户所属客户的名称 #request.parameters // 取请求参数

    也就是说,我们使用name这个表达式的时候,ONGL会取”根对象”的name属性,但现在根对象是ValueStack!那么访问ValueStack的name属性意味着什么呢?这意味着:ValueStack会先查看栈顶元素是否有name属性,如果有就返回该属性值,否则取出栈顶下的元素,继续查看,直到栈底为止。

    以上就是OGNL表达式的核心概念,你理解了吗?下一步,你需要了进一步了解OGNL的语法,以发掘其更强大的功能!

    展开全文
  • URL 中 # 井号用法   我们经常使用URL 定位,传递参数等应用,最经常使用的是? 问号,一般作为参数传递,而我们在接触到单页开发模式的时候会接触到url 中大量# 井号使用,有时候会对这三个常见符号有些分不...

               URL 中 # 井号的用法 

           我们经常使用URL 定位,传递参数等应用,最经常使用的是? 问号,一般作为参数传递,而我们在接触到单页开发模式的时候会接触到url 中大量# 井号的使用,有时候会对这三个常见符号有些分不清,搞不懂具体含义。

    # 井号介绍

    涵义

     在url 中使用# 例如  index.html#product  含义一般是定位到本页面的product位置,所以# 在url 中一般是作为页面定位使用,那么product 到底是用什么定位

    1:<a name="product">

    2:<div id="product">

    这两种方式都可以把滚动条定位到页面的响应位置

    twitter 在改版的时候把 改版前的用户主页网址为http://twitter.com/username改版后,就变成了http://twitter.com/#!/username 这是主流网站第一次将"#"大规模用于重要URL中。这表明井号(Hash)的作用正在被重新认识

     

     

    特性1:HTTP 请求中的作用

       是用来指导浏览器动作的,对服务器端完全无用。所以,HTTP请求中不包括#。

    比如,访问下面的网址,http://www.example.com/index.html#print,浏览器实际发出的请求是这样的:

    GET /index.html HTTP/1.1
    Host: www.example.com

     在第一个#后面出现的任何字符,都会被浏览器解读为位置标识符。这意味着,这些字符都不会被发送到服务器端。

    比如,下面URL的原意是指定一个颜色值:http://www.example.com/?color=#fff,但是,浏览器实际发出的请求是:

    GET /?color= HTTP/1.1
    Host: www.example.com

     

    特性2:改版#不会导致网页重载

        单单改变#后的部分,浏览器只会滚动到相应位置,不会重新加载网页。
    比如,从http://www.example.com/index.html#location1改成http://www.example.com/index.html#location2,浏览器不会重新向服务器请求index.html。

     

    特性3:改版# 后对history 范围历史的影响

     每一次改变#后的部分,都会在浏览器的访问历史中增加一个记录,使用"后退"按钮,就可以回到上一个位置。这对于ajax应用程序特别有用,可以用不同的#值,表示不同的访问状态,然后向用户给出可以访问某个状态的链接。值得注意的是,上述规则对IE 6和IE 7不成立,它们不会因为#的改变而增加历史记录。

     

    鉴于特性2,3 实现了在单页下view 的路由和历史回退,目前h5手机开发所采用的单页模式的基础

     

    特性4:window.location.hash读取#值

     window.location.hash这个属性可读可写。读取时,可以用来判断网页状态是否改变;写入时,则会在不重载网页的前提下,创造一条访问历史记录。

     

    特性5:onhashchange事件 H5新增

    这是一个HTML 5新增的事件,当#值发生变化时,就会触发这个事件。IE8+、Firefox 3.6+、Chrome 5+、Safari 4.0+支持该事件。
      它的使用方法有三种:

    window.onhashchange = func;
    <body οnhashchange="func();">
    window.addEventListener("hashchange", func, false);

     

    对于不支持onhashchange的浏览器,可以用setInterval监控location.hash的变化。

     

    特性6:Google抓取#的机制

          默认情况下,Google的网络蜘蛛忽视URL的#部分。
      但是,Google还规定,如果你希望Ajax生成的内容被浏览引擎读取,那么URL中可以使用"#!",Google会自动将其后面的内容转成查询字符串_escaped_fragment_的值。
      比如,Google发现新版twitter的URL:http://twitter.com/#!/username
      就会自动抓取另一个URL:http://twitter.com/?_escaped_fragment_=/username
      通过这种机制,Google就可以索引动态的Ajax内容。

     

     

    展开全文
  • 最近看了一些dsp的库函数,发现了一些使用##的宏定义,以前没有...CSL_##PER_REG_FIELD##_MASK)其实,##是连接符号,由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串...

    最近看了一些dsp的库函数,发现了一些使用##的宏定义,以前没有用到过,后来差了些资料,学习了##的用法。

    例如下面的语句:

    #define  CSL_FMK(PER_REG_FIELD, val)

    (((val)

    <

    & CSL_##PER_REG_FIELD##_MASK)

    其实,

    ##

    是连接符号,由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串。但它不可以是第一个或者最后一个子串。所谓的子串(token)就是指编译器能够识别的最小语法单元。具体的定义在编译原理里有详尽的解释。

    #符是把传递过来的参数当成字符串进行替代

    假设程序中已经定义了这样一个带参数的宏:

    #define PRINT( n ) printf( "token" #n " = %d", token##n )

    同时又定义了二个整形变量:

    int token9 = 9;

    现在在主程序中以下面的方式调用这个宏:

    PRINT( 9 );

    那么在编译时,上面的这句话被扩展为:

    printf( "token" "9" " = %d", token9 );

    注意到在这个例子中,PRINT(9);中的这个”9”被原封不动的当成了一个字符串,与”token”连接在了一起,从而成为了token9。而#n也被”9”所替代。

    可想而知,上面程序运行的结果就是在屏幕上打印出token9=9

    还有点不明白?

    再来一个例子:

    #define PRINT( n ) printf( "token" #n " = %d", game##n )

    int token9 = 9;

    int game9 = 99;

    调用:

    PRINT(9);

    屏幕上打印出:

    token9 = 99

    展开全文
  • #在C/C++的#define宏定义中有一些很有意思的特殊用法吗,给大家分享一下: 1、#:在宏展开的时候会将#后面的参数替换成字符串,如: #define p(exp) printf(#exp); 调用p(asdfsadf)的时候会将#exp换成"asdfsadf...
  • sql 井号的涵义?

    千次阅读 2021-03-14 20:28:00
    --Truncate table命令 --删除表中的记录而不删除列,此方法不能回滚因为它不使用事务处理。(优点:删除速度快) truncate table cool;(执行结果:表己截断) --desc查看cool表的结构 desc cool; --drop table命令 --删除...
  • Excel单元格中的数据显示为井号(#)是怎么回事excel表格,单元格格式为日期的,如果单元格列宽过小,显示的内容就会变为”#“解决方法:增大列宽在excel打完字后为什么显示一堆井号#######?该怎么办?右键设置单元格...
  • 井号,句号的区别 .理解CSS的样式组成CSS里的样式表是有规则组成的,每条规则有三个部分组成:1.选择器(如下面例子中的:“body”),告诉浏览器文档的哪个部分受规则影响:2.属性(如实例中的font-family ... html5——...
  • C++中##(两个井号)和#(一个井号)用法

    千次阅读 2017-10-26 15:04:53
    下面对常遇到的宏的使用问题做了简单总结。 关 于#和## 在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。...
  • 分割块的好方法 , 区别在于Margin是不同的Tag间互相隔离的距离而Padding是同一元素中不同内容分割使用 , 这在表格中最看得清楚 。 尤其是当对一个区域加载了背景样式之后 , Padding下的内容背景色会发生改变 , ...
  • 有时候我们需要获取url井号后的参数(即描点#后的参数),如下面的链接:http://www.xindingyue.com/example/#comment-1314现在要获取#号后面的comment-1314,如何通过php获取呢?首先声明php是无法直接获取的,因为这...
  • URL 中 井号# 、问号?、 连接符 & 的用法及含义 文章目录URL 中 井号# 、问号?、 连接符 & 的用法及含义1. 井号2. 问号3. 连接符 1. 井号 #,井号:表示网页中的一个位置,被称之为锚点,常用于某个网页间...
  • 一,这是个什么玩意有时候在宏定义或打印语句中经常见到#井号或者##双井号,看着很牛逼的用法二,有毛用啊#:表示字符串化;##:表示concatenate(连接)具体就是,#号的功能是将其后面的参数进行字符串化操作,即...
  • 宏定义#井号用法

    千次阅读 2016-08-14 22:54:38
    单个井号(#):在宏展开的时候会将#后面的参数替换成相应的字符串 #include #define Print(message) printf(#message) int main(int argc, char *argv[]) { Print(Hello World\n); return 0; } 两个井号...
  • 在黄陵二煤矿瓦斯管道的施工过程中,结合煤矿实际条件和技术质量要求,选择了相对应的成孔程序和钻具组合,重点介绍了在管道钻进过程中井斜的控制及泥浆的使用和维护情况,并对后续下套管方法、固井工艺进行了分析...
  • 详解css中"点","井号","逗号","空格","冒号"的用法_三级小野怪的专栏-CSDN博客body{ font-family:Arial,sans-serif; color:#333333; line-height:1.166; margin:0px; padding:0px;}#masthead{ margin:0; padding:10...
  • 下面对常遇到的宏的使用问题做了简单总结。 关 于#和## 在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如...
  • C语言(C++语言)中##(两个井号)和#(一个井号)用法
  • 详解css中"点","井号","逗号","空格","冒号"的用法 内容 <!-- lang: css --> body { font-family:Arial,sans-serif; color:#333333; line-height:1.166; margin:0px; padding:0px; } #masthead { margin:0...
  • 我的CSDN主页 My Python 学习个人备忘录 我的HOT博 #!/usr/bin/env python 的含义    Python...=`与`is not`不同 学习编程的正确方法 来源:老齐教室 CSDN实用技巧博文: 8个好用到爆的Python实用技巧 python忽略警告
  • 在C语言的宏定义中,一个#表示字符串化;两个#代表concatenate 举例如下: #include <iostream> void quit_command(){ printf("I am quit command\n"); } void help_command(){ printf("I am help ...
  • 想学好C语言必须得先学会自救(命令行必须以井号“#”开头 最后不能加分号“;”结尾)2018-11-24【【编程学习】想学好C语言,必须得先学会自救】https://toutiao.com/group/6573450045876601348/?iid=15906422033&...
  • 【操作系统版本】 >>> Windows 10 专业版 21H2 【各组件版本】 >>> eNSP:V100R003C00 >>> VirtualBox:5.2.22 >>> WinPcap:4.1.3 >>> Wireshark:3.0.0_x64 ... (井号的问题是解决了,可是我要做什么实验来这 ??? )
  • URL中 # (井号)的作用

    千次阅读 2018-02-01 15:55:05
    1、井号在URL中指定的是页面中的一个位置井号作为页面定位符出现在URL中,比如:http://localhost:8080/home/index.html#scroller-pullUp,此URL表示在页面index.html中scroller-pullUp的位置。浏览器读取这个URL后...
  • 最近看了一些dsp的库函数,发现了一些使用##的宏定义,以前没有用到过,...## 是连接符号,由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串。但它不可以是第一个或者最后
  • mode: 'hash', //hash模式网址,带#井号 // mode: 'history', // 这里存在一个弊端,如果要去掉路由的#号,需要后端配合配置,否则刷新页面就会报错404,反正如果不是非得要做支付建议不用这个参数配置,参考文档:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,849
精华内容 8,739
关键字:

井号的用法