endif

MM01增强(BADI)

匿名 (未验证) 提交于 2019-12-02 23:38:02
BADI名:BADI_MATERIAL_CHECK 首先在SE19下实例化BADI 进入实施类中找到对应的方法,本文中的增强是针对维护会计视图时的数据检查,启用方法:CHECK_DATA,其可用参数如下 进入CHECK_DATA的实现中,编写代码即可: 代码文本: WMBEW - . . WMARC - '1202' . . MARC '1202' 'D' WMARC - MATNR . SY - 0 . GV_MARC - 99 . WMBEW - WMBEW - 0 . ' 请清空价格后再保存! . ENDIF . ENDIF . ELSE . WMARC - . WMARC - 99 .. WMBEW - WMBEW - 0 . ' 请清空价格后再保存! . ENDIF . ENDIF . . ' 请先创建 MRP 视图! . ENDIF . ENDIF . ENDIF . ENDIF . 文章来源: https://blog.csdn.net/Sundam/article/details/90755030

#ifdef,#else,#endif,#if用法详解

匿名 (未验证) 提交于 2019-12-02 23:32:01
预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作。说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译。这样做的好处是,经过处理后的代码,将会变的很精短。 关于预处理命令中的文件包含(#i nclude),宏定义(#define),书上已经有了详细的说明,在这里就不详述了。这里主要是对条件编译(#ifdef,#else,#endif,#if等)进行说明。以下分3种情况: 1:情况1: #ifdef _XXXX …程序段1… #else …程序段2… #endif 这表明如果标识符_XXXX已被#define命令定义过则对程序段1进行编译;否则对程序段2进行编译。 例: #define NUM … … … #ifdef NUM #else #endif } 如果程序开头有#define NUM这行,即NUM有定义,碰到下面#ifdef NUM的时候,当然执行第一个printf。否则第二个printf将被执行。 我认为,用这种,可以很方便的开启/关闭整个程序的某项特定功能。 2:情况2: #ifndef _XXXX …程序段1… #else …程序段2… #endif 这里使用了#ifndef,表示的是if not def。当然是和#ifdef相反的状况(如果没有定义了标识符_XXXX,那么执行程序段1,否则执行程序段2)。 3:情况3:

用条件属性而不是#if

匿名 (未验证) 提交于 2019-12-02 22:10:10
  使用#if #endif可以在同样源码上生成不同的编辑(结果),通常是调式(debug)和发布(release)版本。    但是#if/#endif很容易被滥用,使得编写的代码难以理解和调式,所以C#提供了条件特性(Conditional attribute)来识别哪些方法可以根据环境设置来判断是否应该被调用。    条件特性比条件编辑#if #endif更加清晰明白,所有优秀使用Conditional attribute     [Conditional("DEBUG")]//只在Debug模式下test方法才会被调用 public static void Test() { Console.WriteLine("Debug"); } 总结:编译器使用Conditional特性来帮助开发者使用#if #endif 而产生常规错误。条件特性比起预处理,它为区分条件代码提供了更好的区分 文章来源: 用条件属性而不是#if

linux网络命名空间及使用

匿名 (未验证) 提交于 2019-12-02 21:59:42
从逻辑上说,网络命名空间是网络栈的副本,有自己的网络设备、路由选择表、邻接表、Netfilter表、网络套接字、网络procfs条目、网络sysfs条目和其他网络资源。 网络命名空间可以营造出多个内核网络栈实例的假象。网络命名空间的结构为net,定义在文件 include/net/net_namespace.h struct /* To decided when the network /* To decided when the network struct /* list of network namespaces */ struct /* namespaces on death row */ struct /* Use only net_mutex */ struct /* Owning user namespace */ struct struct struct struct struct #ifdef CONFIG_SYSCTL struct #endif struct /* rtnetlink socket */ struct struct 指向一个包含所有网络设备的链表 struct 指向一个包含所有网络设备的散列表,键为网络设备名 struct 指向一个包含所有网络设备的散列表,键为网络设备索引 unsigned int /* protected by rtnl

Linux链接库三(C跟C++之间动态库的相互调用)

匿名 (未验证) 提交于 2019-12-02 21:56:30
http://www.cppblog.com/wolf/articles/74928.html http://www.cppblog.com/wolf/articles/77828.html http://www.jb51.net/article/34990.htm C和C++之间库的互相调用 extern "C"的理解: 很多人认为"C"表示的C语言,实际并非如此,"C"表示的是一种链接约定,只是因C和C++语言之间的密切关系而在它们之间更多的应用而已。实际上Fortran和汇编语言也常常使用,因为它们也正好符合C实现的约定。 extern "C"指令描述的是一种链接约定,它并不影响调用函数的定义,即时做了该声明,对函数类型的检查和参数转换仍要遵循C++的标准,而不是C。 2.extern "C"的作用: 不同的语言链接性是不同的,那么也决定了它们编译后的链接符号的不同,比如一个函数void fun(double d),C语言会把它编译成类似_fun这样的符号,C链接器只要找到该函数符号就可以链接成功,它假设参数类型信息是正确的。而C++会把这个函数编译成类似_fun_double或_xxx_funDxxx这样的符号,在符号上增加了类型信息,这也是C++可以实现重载的原因。 那么,对于用C编译器编译成的库,用C++直接链接势必会出现不能识别符号的问题,是的,需要extern "C

if的用法

房东的猫 提交于 2019-12-02 06:28:58
今天在看程序的时候看到了一个关于#if 的用法,eg: #if(表达式) … #endif 通过查阅知道它是一种编译预处理命令,然后看了下它的常用方法,觉得很实用就记录了下来 1. #if 表达式 + 程序段 + #endif 形式 #if 表达式 程序段1 #else 程序段2 #endif 表示:如果表达式为真,则编译程序段1,否则编译程序段2. 2. #ifdef标示符 + 标识符 + #endif 形式 表示:如果标示符已经被#define命令定义过,则编译程序段。 eg: #define a 100 此时,我们要检查a是否定义(假设我们已经记不着这点了),或者我们要给a一个不同的值,就加入如下句子 #if defined a #undef a #define a 200 #endif 上述语句检验a是否被定义,如果被定义,则用#undef语句解除定义,并重新定义a为200 3. #if 0/ #if 1 + #endif 形式 首先这里的0和1可以当做普通表达式来看待,1为真,0为假。 其次使用#if 0 有个很实用的方法就是当做注释来用。 有时候比用 // 和 / … / 整洁美观 比如用在调试代码的时候,code中定义的是一些调试版本的代码,此时code完全被编译器忽略。如果想让code生效,只需把#if 0改成#if 1 eg: #include int main

计算机应用实习报告

早过忘川 提交于 2019-12-02 01:54:09
计算机应用实习报告 前言 我于 2005 年 8 月 29 日 至 9 月 8 日 在进行了为期两个星期的实习。通过此次实习,我对自己的专业有了更全面、更深入的认识,看到了自己专业知识上的不足,同时也提高了自己的观察分析、交流沟通、组织协调等能力。 在实习中,我们参观了云南英茂通信股份有限公司、云南经济信息中心。通过参观这两家单位,使我了解到了单前计算机应用技术在卫星、数据库、网络通讯方面的应用。尤其是计算机在无线通讯、远程通讯的应用。计算机已经成为现代社会多元化的潮流,它已经深入到日常工作和生活的方方面面,象文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。 本次实习,通过听讲座、听报告,我还了解到了数据仓库在企业的应用,同时加上对云南经济信息中心的参观,对数据仓库有了一定的了解。我是学计算机软件工程的,而且我给自己的发展定了目标,就是向数据库方向发展,因此数据仓库的应用对我尤其重要,通过本次实习,我了解到了首次了解、认识了数据仓库。 网络也是本次实习中的一个组成部分,在本次实习中,我们听了关于 IP V4~IP V6 的讲座,同时动手组装了局域网。 在实习的最后,我们还听了一个关于计算机综合的讲座,一个有关于项目开发与管理的讲座。 在当今软件开发中,决定项目成败的一个重要因素就是项目管理者的管理能力。“软件工程项目的管理是一项复杂而要求严格的活动”

Android:wpa_supplicant决定选择哪种驱动

风流意气都作罢 提交于 2019-12-01 15:36:24
1, main 函数的入口: external/wpa_supplicant_8/wpa_supplicant/main.c 2, init.rc中通过参数指定要加载哪个驱动 3, wpa_supplicant中加载驱动的原理 main.c: main() --> wpa_supplicant.c: wpa_supplicant_add_iface() --> wpa_supplicant.c: wpa_supplicant_init_iface() -->wpa_supplicant.c: wpa_supplicant_set_driver() -->wpa_supplicant.c: select_driver() -->此处根据driver的索引i, 初始化对应的驱动。 wpa_drivers[i]->global_init. 4. 各个驱动的配置: 在文件 src/drivers/drivers.c中有所支持全部驱动的一个数组: struct wpa_driver_ops *wpa_drivers[] = { #ifdef CONFIG_DRIVER_WEXT &wpa_driver_wext_ops, #endif /* CONFIG_DRIVER_WEXT */ #ifdef CONFIG_DRIVER_NL80211 &wpa_driver_nl80211_ops,

source insight中的快捷键总结

好久不见. 提交于 2019-12-01 14:37:08
1.快捷键 1,Shift+F8高亮显示指定字符。 2,Ctrl+F找出来的结果用F4,F3前进后退查找。 3,Alt+,后退alt+.前进查找关键字。 4,Alt+G或者F5跳转到某个固定的行号。 5,Ctrl+M可以自己管理标号,自己可以定义一个编号,可以在一个文件或者多个文件间很容易的切换。 6,Ctrl+H是在一个文件中查找替换,ctrl+shift+h在多个文件中查找替换。 7,在si中可以进行列的选择,方法是按住alt并左键选择。 8,Ctrl+/是在打开的所有文件中查找某些关键字。 9,Ctrl+k是复制一行的快捷键 10,我们在用Ctrl+/查找结果后,进去一个索引后,像要切换到下一个用F10,上一个用F9。 11,Ctrl+i在光标所在行的上边添加一行。自动分配的在光标所在行的下边添加一行的快捷键是ctrl+enter,不能使用,更改options->key assignment 中的Edit: Insert Line Before Next 的快捷键,我的更改成了ctrl+o。 12,Ctrl+R 是Renumber的快捷键,这个用于处理数字顺序排列的情况相当有效,比如数组下标。例如现有代码 array[0] = 1; array[1] = 2; array[2] = 3; 现在要改为 array[0] = 0; array[1] = 1; array[2] =

宏指令

旧街凉风 提交于 2019-12-01 09:49:56
#define已经在前面介绍过了,这里就不再讨论。 #error可以强迫编译程序停止编译,用来在编译期检查环境是否符合要求或者与约束的条件发生了冲突。 其使用格式是: #error token-string 当程序在编译过程当中遇到这个关键字,就会停止编译,产生一个错误信息,并且输出后面的token-string。例如: #if !defined(__cplusplus) #error C++ compiler required. #endif 上面这段代码的意思是在预编译期检查当前的程序是否是C++编程环境,如果不是,就定义#error,让编译器停止编译。 #if和#endif会在后面介绍,这里只需要将#if视为普通的if判断语句,将#endif看成是if判断的结束。 #include使编译程序将#include所指向的源文件导入进当前的源文件,被包含的文件必须被尖括号或者引号包围起来。 #if,#else,#elif,#endif,#ifdef和#ifndef属于条件编译命令,可以对程序的各个部分有选择地进行编译。 #undef命令用来取消前面定义过的宏名。例如: #define NUMBER 10 int _tmain(int argc, _TCHAR* argv[]) { #ifdef NUMBER cout << NUMBER << endl; // 输出10