endif

条件注释的两种形式——下层隐藏与下层显示

风格不统一 提交于 2019-11-28 01:45:36
条件注释的两种形式——下层隐藏与下层显示 条件注释 (conditional comment) 是于HTML源码中被 Microsoft Internet Explorer 有条件解释的语句。条件注释可被用来向 Internet Explorer 提供及隐藏代码。 条件注释最初于微软的 Internet Explorer 5浏览器中出现,并且直至 Internet Explorer 9 均支持。微软已宣布于 Internet Explorer 10 中以标准模式处理页面 - 如 HTML5 - 时停止支持,但是旧版网页使用这种技术(于兼容性视图)将继续有效。 在处理兼容问题时,条件注释是非常常见的手段 <!-- Bootstrap --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet"> <!-- HTML5 shim 和 Respond.js 是为了让 IE8 支持 HTML5 元素和媒体查询(media queries)功能 --> <!-- 警告:通过 file:// 协议(就是直接将 html 页面拖拽到浏览器中)访问页面时 Respond.js 不起作用 --> <!--[if lt IE 9]> <script

共享智能指针shared_ptr的实现

微笑、不失礼 提交于 2019-11-28 01:23:20
shared_ptr是一个最像指针的“智能指针”,是boost.smart_ptr库中最有价值、最重要的组成部分,也是最有用的,Boost库的许多组件——甚至还包括其他一些领域的智能指针都使用了shared_ptr,所以它被毫无悬念地收入了C++11标准。 shared_ptr与scoped_ptr一样包装了new操作符在堆上分配的动态对象,但它实现的是引用计数型的智能指针0,可以被自由地拷贝和赋值,在任意的地方共享它,当没有代码使用(引用计数为0)它时才删除被包装的动态分配的对象。 shared_ptr也可以安全地放到标准容器中,是在STL容器中存储指针的最标准解法。 实现原理 #include<iostream> #include<vld.h> using namespace std; //shared_ptr //#define TEST class sharend_base { public: sharend_base():use_count(1) { #ifdef TEST cout << "Create sharend_base object." << endl; #endif } virtual void dispose() = 0;//纯虚函数 virtual void destroy() { delete this; } void release() { if (

C# #IF, #ELSE和#ENDIF预处理指令

假如想象 提交于 2019-11-27 04:42:48
#if 使您可以开始条件指令,测试一个或多个符号以查看它们是否计算为 true 。如果它们的计算结果确实为 true ,则编译器将计算位于 #if 与最近的 #endif 指令之间的所有代码。例如, 1 #if DEBUG 2 string file = root + "/conf_debug.xml"; 3 #else 4 string file = root + "/conf.xml"; 5 #endif 这段代码会像往常那样编译,但 读取debug配置文件包含在 #if子句内。这行代码只有在前面的 #define命令定义了符号 DEBUG后才执行。当编译器遇到 #if语句后,将先检查相关的符号是否存在,如果符号存在,就只编译 #if块中的代码。否则,编译器会忽略所有的代码,直到遇到匹配的 #endif指令为止。一般是在调试时定义符号 DEBUG,把不同的调试相关代码放在 #if子句中。在完成了调试后,就把 #define语句注释掉,所有的调试代码会奇迹般地消失,可执行文件也会变小,最终用户不会被这些调试信息弄糊涂 (显然,要做更多的测试,确保代码在没有定义 DEBUG的情况下也能工作 )。这项技术在 C和 C++编程中非常普通,称为条件编译 (conditional compilation)。 // preprocessor_if.cs #define DEBUG

SC06

爱⌒轻易说出口 提交于 2019-11-26 19:04:22
/*--> */ /*--> */ *&---------------------------------------------------------------------* *& Report Z_SALAH_SC06 *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* REPORT Z_SALAH_SC06 . ********************************************************************** *REPORT DESCRIBE:报表提升练习 *DEVELOPER:SALAH *DEVELOP DATE:20190916 *MODIFY DATE: *FUNCTION SPEC: *KEY USER: ********************************************************************** TYPE-POOLS :SLIS ,VRM . TABLES :MARD ,MARA ,MAKT ,MARC ,MSEG ,MKPF .

年月日选择屏幕

半城伤御伤魂 提交于 2019-11-26 18:34:28
/*--> */ /*--> */ *&---------------------------------------------------------------------* *& Report Z_SELSCREEN_DEMO *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* REPORT Z_SALAH_SEL . DATA GT_01 TYPE STANDARD TABLE OF EKKO . DATA GV_STR TYPE STRING . TYPES : BEGIN OF TYP_MONAT , MONAT TYPE ZDATA_E_N , END OF TYP_MONAT . DATA GT_MONAT TYPE STANDARD TABLE OF TYP_MONAT . DATA GS_MONAT TYPE TYP_MONAT . ********************************************************************** *选择屏幕 *****************

测试

倾然丶 夕夏残阳落幕 提交于 2019-11-26 17:15:06
目录  物理内存 物理内存描述 节点 pg_data_t 管理区zone  page 页表 物理内存初始化 memblock 页表建立 ARM32 页表映射 ARM64 页表映射 内存布局 ARM32 内存布局 ARM64 内存布局 物内存分配 linux内存管理 2019-05-05 by jinliang  物理内存 内存结构: 物理内存描述 内存模型: UMA 一致性内存访问 NUMA 非一致性内存访问 查看手机发现CONFIG_NUMA未定义,所以当前手机为UMA模型 节点 pg_data_t pg_data_t用于表示节点的基本元素,定义如下: ./include/linux/mmzone.h typedef struct pglist_data { //包含了节点中各个内存域的数据结构,最大3个,不足的话,其余数组用0填充. struct zone node_zones[MAX_NR_ZONES]; //制定了备用节点机器内存域的列表,以便在当前节点没有可用空间时,在备用节点分配内存. struct zonelist node_zonelists[MAX_ZONELISTS]; //节点中不同内存域的数目保存在nr_zones中. int nr_zones; #ifdef CONFIG_FLAT_NODE_MEM_MAP /* means !SPARSEMEM */

halcon多条线合并为一条问题

匆匆过客 提交于 2019-11-26 06:26:23
如这样的多条线合成一条线 通过斜率(垂直和平行不需要)来计算;x或y基本不变,通过求平均值得到一条线;选取最长得,注意判断误差, 部分代码,在我得项目里是可以得 * 去除误差 KH1 : = 0 for i : = 0 to Lengths - 1 by 1 k : = 0 for j : = 0 to Lengths - 1 by 1 if ( i != j ) if ( RowBeginH [ i ] > RowBeginH [ j ] - 30 and RowBeginH [ i ] < RowBeginH [ j ] + 30 ) k : = k + 1 endif endif endfor if ( Lengths > 5 ) if ( k < ( Lengths ) / 3 ) RowBeginH [ i ] : = 0 KH1 : = KH1 + 1 endif endif endfor * 选择水平直线,下面 4 个是线的两点 RBH1 : = 0 CBH1 : = 10000 REH1 : = 0 CEH1 : = 0 for i : = 0 to Lengths - 1 by 1 if ( RowBeginH [ i ] > 0 ) if ( ColBeginH [ i ] < ColEndH [ i ] ) RBH1 : = RBH1 + RowBeginH