include

使用 VS2019、VSCode 编辑 Linux 驱动工程

落爺英雄遲暮 提交于 2020-03-16 09:53:03
准备配置文件 创建Project1.vcxproj配置文件 文件中添加如下内容 Debug x64 Linux Project1 15.0 Linux 1.0 Generic {2238F9CD-F817-4ECC-BD14-2524D2669B35} true D:/Linux/linux-3.4.39.6818/include; D:/Linux/linux-3.4.39.6818/arch/arm/include; D:/Linux/linux-3.4.39.6818/arch/arm/include/generated; D:/Linux/linux-3.4.39.6818/arch/arm/mach-s5p6818/include; D:/Linux/linux-3.4.39.6818/arch/arm/plat-s5p6818/include; D:/Linux/linux-3.4.39.6818/arch/arm/plat-s5p6818/common; D:/Linux/linux-3.4.39.6818/arch/arm/plat-s5p6818/GEC6818/include; %(AdditionalIncludeDirectories) __KERNEL__;CONFIG_RWSEM_GENERIC_SPINLOCK 项 描述 kernel/include

.h文件与.hpp文件的区别

家住魔仙堡 提交于 2020-03-16 08:29:12
hpp,其实质是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再将cpp加入到project中进行编译。而实现代码将直接编译到调用者的obj文件中,不再生成单独的obj,采用hpp将大幅度减小project中的cpp文件数与编译次数,也不再发布烦人的lib与dll,因此非常适合用来编写公用的开源库。 是Header plus plus得缩写 与*.h类似,hpp是C++程序的头文件 是VCL专用的头文件,已预编译 是一般模板类的头文件 一般来说,*.h里面只有声明,没有实现,而*.hpp里面声明实现都有,后者可以减小cpp的数量。 注意hpp文件不可包含全局对象和全局函数 由于hpp本质上是作为.h被调用者include,所以当hpp文件中存在全局对象或者全局函数,而该hpp被多个调用者include时,将在链接时导致符号重定义错误。要避免这种情况,需要去除全局对象,将全局函数封 .h文件与.hpp文件的区别 hpp,其实质是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再将cpp加入到project中进行编译。而实现代码将直接编译到调用者的obj文件中,不再生成单独的obj

PHP: file_get_contents a PHP file with include();

爷,独闯天下 提交于 2020-03-16 05:30:39
问题 I have a PHP Script that calls a master PHP template (acts as HTML template) with file_get_contents , replaces a few words from it and then saves the final file as another PHP in a directory. But the master PHP template itself has include(); and require_once(); in it and the saved file after replacing the words doesn't load the files called from the master template. The HTML source code of the saved file is with <?php include('file_here'); ?> in it, but not with the output of file_here -- see

PHP: file_get_contents a PHP file with include();

白昼怎懂夜的黑 提交于 2020-03-16 05:27:47
问题 I have a PHP Script that calls a master PHP template (acts as HTML template) with file_get_contents , replaces a few words from it and then saves the final file as another PHP in a directory. But the master PHP template itself has include(); and require_once(); in it and the saved file after replacing the words doesn't load the files called from the master template. The HTML source code of the saved file is with <?php include('file_here'); ?> in it, but not with the output of file_here -- see

uvalive7040/cf gym 100548 Color(2014西安区域赛F题)

試著忘記壹切 提交于 2020-03-16 01:45:03
Source CF GYM 100548 UVALIVE 7040 题意 n个格子排成一行,有m种颜色,问用恰好k种颜色进行染色,使得相邻格子颜色不同的方案数。 \(k\leq10^6\quad n, m\leq10^9\) 分析 在网上看到的几篇解题报告好像没讲清楚为什么是容斥(反正我没看懂。。),所以我也写一篇。 首先,我们可以从m个颜色中取出k个,即 \(C^k_m\) 。 接着容易想到 \(k*(k-1)^{n-1}\) , 这个是使用不超过k种颜色的所有方案。但我们要求的是恰好使用k种颜色。 假设选出的k种颜色标号为1,2,3,..., k,那么记 \(A_i\) 为 不使用 颜色i的方案数,求的就是 \(|S| - |A_1\bigcup A_2\bigcup\cdots\bigcup A_n|\) 。也就是反过来考虑,我们不考虑用了哪些颜色,我们考虑哪些颜色没用!减去所有有没使用颜色的方案的并集,剩下的方案就是使用了所有k种颜色的方案。上式中的 \(|S|\) 即 \(k*(k-1)^{n-1}\) ,后者就可以用容斥原理来求了。注意到我们只是给颜色标了个号,所以后面每一项的应为 \(C^i_k*(k-i)*(k-i-1)^{n-1}\) 的形式,即选出i个不使用的颜色,用剩余颜色去涂的方案数。完整式子写起来比较麻烦就不写了,可以参考其他blog。 代码 /*****

C++调用java

落花浮王杯 提交于 2020-03-15 23:47:58
摘要: 1 java类生成c头文件和库文件 2 对于c/c++程序,启动时先启动jvm,然后获得对应的java类的对象和方法。然后正常使用。 最近正在做一个C/C++调用java的程序,这里说的调用java不是使用方式 exec(/path/to/java,.....),而是调用一个class文件中的一个特定的函数。 实践后总结如下: 1. 安装 jdk 2. 安装gcc(linux自带有的就无需安装了) 利用JNI(java native interface),来实现动态建立java runtime environment. 第一,C/C++程序中包含头文件"jni.h" #include <jni.h> 一般在JAVA_HOME/include 目录下。 调用jni.h中的方法建立runtime env 然后调用java 程序。 第二,编译 g++ -o testjava testjava.cpp -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux -L${JRE_HOME}/lib/i386/client -ljvm 以上就是大致思路,现详细说明过程如下: #####################################################################################

C语言生成随机数

别说谁变了你拦得住时间么 提交于 2020-03-15 17:25:30
强烈建议阅读 → 重新整理后的文章 2012年的时候写过一篇C语言生成随机数的博客,点击量比较高。后来发现那篇博客描述的不是非常准确,这里重新整理一遍。写惯了高级语言,现在回看C的语法,真的是挺难的^o^。 一、方法介绍 生成随机数,需要用到两个函数 srand 、 rand ,头文件为 #include <stdlib.h> 1.1 void srand ( unsigned int seed ) 生成随机数种子,注意 如果使用相同的种子后面的 rand() 函数会出现一样的随机数 。常见的用法是使用一些动态的值来初始化这个种子: srand((unsigned) time(NULL));srand((int)getpid()); 1.2 int rand ( void ) 根据 srand 初始的随机数种子产生一个伪随机数(注意不是真正的随机),范围为 0 - RAND_MAX。RAND_MAX 至少为 32767,我电脑为 2147483647。可通过取模来产生不同范围的随机数,如: int randint = rand() % (MAX + 1 - MIN) + MIN; 1.3 举例实现 下面给出了一个举例的实现(POSIX.1-2001),帮助更好的理解其原理,每次调用 rand 的时候,其实是改变了一个全局变量,从而导致下一次调用返回了不同的值。 static

HDU 3480 DP 斜率优化 Division

风流意气都作罢 提交于 2020-03-15 09:28:53
把n个数分成m段,每段的值为(MAX - MIN) 2 ,求所能划分得到的最小值。 依然是先从小到大排个序,定义状态d(j, i)表示把前i个数划分成j段,所得到的最小值,则有状态转移方程: d(j, i) = min { d(j-1, k) + (a i - a k+1 ) 2 | 0 ≤ k < i } 设 l < k < i,且由k转移得到的状态比由l转移得到的状态更优。 有不等式: 整理成斜率形式: 后面的就可以相当于套模板了,不过这里要用滚动数组优化一下空间。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 using namespace std; 6 7 const int maxn = 10000 + 10; 8 const int maxm = 5000 + 10; 9 const int INF = 0x3f3f3f3f; 10 11 int n, m; 12 13 int a[maxn]; 14 int d[2][maxn]; 15 16 int head, tail; 17 int Q[maxn]; 18 19 int cur; 20 21 int inline Y(int x) { return d[cur^1][x] + a[x

Linux文件(区域)锁函数 -- open()、fcntl()

a 夏天 提交于 2020-03-15 05:38:35
一、什么是文件锁定 对于锁这个字,大家一定不会陌生,因为我们生活中就存在着大量的锁,它们各个方面发挥着它的作用,现在世界中的锁的功能都可归结为一句话,就是阻止某些人做某些事,例如,门锁就是阻止除了屋主之外的人进入这个房子,你进入不到这个房子,也就不能使用房子里面的东西。 而因为程序经常需要共享数据,而这通常又是通过文件来实现的,试想一个情况,A进程正在对一个文件进行写操作,而另一个程序B需要对同一个文件进行读操作,并以读取到的数据作为自己程序运行时所需要的数据,这会发生什么情况呢?进程B可能会读到错乱的数据,因为它并不知道另一个进程A正在改写这个文件中的数据。 为了解决类似的问题,就出现了文件锁定,简单点来说,这是文件的一种安全的更新方式,当一个程序正在对文件进行写操作时,文件就会进入一种暂时状态,在这个状态下,如果另一个程序尝试读这个文件,它就会自动停下来等待这个状态结束。Linux系统提供了很多特性来实现文件锁定,其中最简单的方法就是以原子操作的方式创建锁文件。 用回之前的例子就是,文件锁就是当文件在写的时候,阻止其他的需要写或者要读文件的进程来操作这个文件。 二、创建锁文件 创建一个锁文件是非常简单的,我们可以使用open系统调用来创建一个锁文件,在调用open时oflags参数要增加参数O_CREAT和O_EXCL标志,如file_desc = open("/tmp/LCK

第5课.异步通知

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-14 19:03:35
1.按键的4种控制方式对比 1.查询 :耗资源 | 2.中断 :没有超时机制 | APP---->驱动 3.poll :加入了超时机制 | 4.异步通知 :按键发生后去通知app 驱动--->APP 异步通知的注意事项 1.不是所有的设备都支持异步通知。应用程序通常假设只有套接字和终端才有异步通知能力。 2.当进程收到SIGIO信号时,它并不知道是哪个输入文件有了新的输入。如果有多于一个文件可以异步通知输入的进程,则应用程序仍然必须借助于poll或select来确定输入的来源。 2.异步通知开发流程 1.应用程序注册信号处理函数 signal(SIGIO, my_signal_fun); 2.驱动程序发信号 void kill_fasync(struct fasync_struct **fp, int sig, int band) 3.信号被发给应用程序,应用程序需要告诉驱动pid fcntl(fd, F_SETOWN, getpid()); // 告诉内核pid,让内核知道应该通知那个进程 解析:当fcntl系统调用执行F_SETOWN命令时,属主进程的进程ID号就被保存在filp->f_owner中 Oflags = fcntl(fd, F_GETFL); fcntl(fd, F_SETFL, Oflags | FASYNC); // 改变fasync标记