YJX_Driver_024_驱动代码中C和C++代码区别

1、

驱动代码中C和C++代码区别
  A、函数调用约定
  B、C和C++编译方式
  C、用C++方式编译驱动
  D、C代码升级至C++
  E、优化21课的代码

本课主要是做着两个工作:"D、C代码升级至C++"、"E、优化21课的代码"

【180】把 第21课 的代码复制过来

2、
*.c
当文件后缀名为*.c时 编译器将会用C编译器方式编译
*.cpp
当文件后缀名为*.cpp时 编译器将会用C++编译器方式编译
区别:

解决办法
在需要用到C方式编译的函数前加extern "C"

需要用C方式编译的头文件做如下修改
#pragma once
#ifdef __cplusplus
extern "C"
{
#endif
#include <NTDDK.h> //这里包含需要用C方式编译的头文件
#ifdef __cplusplus
}
#endif

1>errors in directory g:\驱动教程\024_驱动代码中c和c++代码区别\mini_ddk
1>mini_ddk.obj : error LNK2001: unresolved external symbol "struct _ServiceDescriptorTable * KeServiceDescriptorTable" ([email protected]@[email protected]@A)
1>bufferoverflowk.lib(gs_support.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function [email protected]
1>sys\i386\ddk_helloworld.sys : error LNK1120: 2 unresolved externals
[email protected]@[email protected]@[email protected]@@Z

[email protected] //要求格式
[email protected]@[email protected]@[email protected]@@Z ?
实例 修改21课的代码 升级到C++编译模式
A、为入口函数 添加Extern "C"
B、修改Source文件
C、修改21课的BUG

extern "C" __declspec(naked) __stdcall test(int a, int b)

时间: 2024-10-06 22:14:19

YJX_Driver_024_驱动代码中C和C++代码区别的相关文章

JVM 性能调优实战之:使用阿里开源工具 TProfiler 在海量业务代码中精确定位性能代码

本文是<JVM 性能调优实战之:一次系统性能瓶颈的寻找过程> 的后续篇,该篇介绍了如何使用 JDK 自身提供的工具进行 JVM 调优将 TPS 由 2.5 提升到 20 (提升了 7 倍),并准确定位系统瓶颈:我们应用里静态对象不是太多.有大量的业务线程在频繁创建一些生命周期很长的临时对象,代码里有问题.那么问题来了,如何在海量业务代码里边准确定位这些性能代码?本文将介绍如何使用阿里开源工具 TProfiler 来定位这些性能代码,成功解决掉了 GC 过于频繁的性能瓶颈,并最终在上次优化的基础

ifeve.com 南方《JVM 性能调优实战之:使用阿里开源工具 TProfiler 在海量业务代码中精确定位性能代码》

https://blog.csdn.net/defonds/article/details/52598018 多次拉取 JStack,发现很多线程处于这个状态:    at jrockit/vm/Allocator.getNewTla(JJ)V(Native Method)    at jrockit/vm/Allocator.allocObjectOrArray(Allocator.java:354)[optimized]    at java/util/HashMap.resize(Hash

【openresty】向lua代码中传递参数

前面介绍FormInputNginxModule模块时,明白了openresty如何获取post提交的数据. 然后,如果需要通过lua处理这些数据,需要把数据作为参数传递到lua中,lua获取了这些数据,又会将结果返回到nginx内,从而完成整个流程. 首先,有post请求: 1 var json = { 2 data: "Hello!" 3 }; 4 $.post( 5 'save', 6 json, 7 function(callback){ 8 alert(callback);

如何修改代码中的硬编码问题

在前端.后端编码中通常会出现一些固定的值,而这些固定的值有的是直接写死在逻辑代码中,有的是通过常量或者宏量替换来处理,也有的是通过枚举类型来转换,还有就是通过资源配置文件来处理.在上述的几种方式中,除了配置文件的方式外其余的方式都是写死在代码中,虽然从短期来看,这确实解决了交付代码的压力:但是从长期来看,这样的编码方式并不适应业务需求的变更,不够灵活. (一)何谓硬编码? 最简单.最直接的理解就是将一些可以变化的固定值写死在代码中,是在代码运行之前就确定好了的,后续若想更改的话,只能是重新修改源

qq联系我们代码-qq在线客服代码

“在线状态”是腾讯公司提供的一种快速沟通服务,该服务可以让您在不加好友的情况下和域中的朋友发起临时会话.这个代码需要登录http://wp.qq.com,进行一些的设置,然后将生成的代码嵌入至您网页上对应的页面代码中. 代码如下: <!-- qq联系我们 开始--> <a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin=12345678&site=qq&menu=yes&qu

如何:在 DHTML 代码和客户端应用程序代码之间实现双向通信

https://msdn.microsoft.com/zh-cn/library/a0746166 可以使用 WebBrowser 控件向 Windows 窗体客户端应用程序添加现有的动态 HTML (DHTML) Web 应用程序代码. 在投入大量的开发时间创建基于 DHTML 的控件,并希望利用丰富的 Windows 窗体用户界面功能而无需重写现有的代码时,该控件十分有用. 使用 WebBrowser 控件,可以通过 ObjectForScripting 和 Document 属性在客户端应

从Android代码中来记忆23种设计模式

我的简书同步发布:从Android代码中来记忆23种设计模式 相信大家都曾经下定决心把23种设计模式牢记于心,每次看完之后过一段时间又忘记了~,又得回去看,脑子里唯一依稀记得的是少数设计模式的大致的定义.其实,网上很多文章讲得都非常好,我也曾经去看过各种文章.也曾一直苦恼这些难以永久记下的设计模式,直到我接触到了<Android源码设计模式解析与实战>--何红辉与关爱明著,发现原来其实我们在Android中都接触过这些设计模式,只是我们不知道而已.既然我们都接触过,我们只需一一对号入座,对设计

提取代码中的部分代码字段

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 选择调用的进程为 24 i386 getuid sys_getuid1647 i386 getgid sys_getgid16 使用库函数API方式 使用C代码中嵌入汇编代码方式