c语言或驱动程序函数调用前有下划线,调用的时候就没有下划线,问下为啥,还有前面多了个p

author author     2023-04-01     310

关键词:

typedef struct _MYDATASTRUCT

ULONG number;
LIST_ENTRY ListEntry;
MYDATASTRUCT, *PMYDATASTRUCT;

#pragma INITCODE
VOID Test_List()
//VOID LinkListTest()

//定义列表名称
LIST_ENTRY hesnList;

//初始化列表
InitializeListHead(&hesnList);

//定义结构体
PMYDATASTRUCT pHesn_Struct;

这个代码中 typedef struct _MYDATASTRUCT 中 _MYDATASTRUCT 使用了下划线
调用的时候 PMYDATASTRUCT pHesn_Struct; 却没有瞎花钱,前面加了个P,是什么意思

有下划线的是结构名称,没有的是别名,二者是等校的。
看第一个关键字typedef,他把结构_MYDATASTRUCT 定义为MYDATASTRUCT和 *PMYDATASTRUCT两个别名,一个是非指针类型、一个是指针类型,P其实是程序员自己加的一个标示符,说明他是一个指针变量。
参考技术A typedef struct _MYDATASTRUCT 

ULONG number;
LIST_ENTRY ListEntry;
 MYDATASTRUCT, *PMYDATASTRUCT;

简化与问题无关的代码,就是

typedef struct _MYDATASTRUCT ... MYDATASTRUCT, *PMYDATASTRUCT;

和一般变量的声明一样,这可以看作等同于两句代码

typedef struct _MYDATASTRUCT ... MYDATASTRUCT;
typedef struct _MYDATASTRUCT *PMYDATASTRUCT;

能看出来MYDATASTRUCT就是这个结构体的别名,PMYDATASTRUCT就是指向这个结构体的指针的别名

c语言函数调用规则

...在退出时清空堆栈。VC将函数编译后会在函数名前面加上下划线前缀,在函数名后加上"@"和参数的字节数。_cdecl按从右至左的顺序压参数入栈,由调用者把参数弹出栈。对于传送参数的内存栈是由调用者来维护的(正因为... 查看详情

c语言怎么调用dll文件

...i也应该是从dll中导出来的,这样c应该也是能调用dll的,c语言调用dll文件内部函数的方法如下:1:用c调用一个加载器LOADER<可能是个api函数>;2:加载目标dll,比如xx.dll3:找到需要调用的函数的地址P_FUNC4:调用FUNC即可 查看详情

函数嵌套和递归调用(代码片段)

C语言函数调用形式有两种:嵌套调用、递归调用。C语言函数嵌套调用:在调用一个函数的过程中,又调用另一个函数,称为函数嵌套调用,C语言允许函数多层嵌套调用,只要在函数调用前有函数声明即可。1#include<stdio.h>2in... 查看详情

外部程序(可执行文件)调用的一些问题

...的可执行文件,当编程工具为c/c++时,通过使用system()函数,或exec家族函数可实现对外部可执行文件的调用。如果使用execlp()函数,会出现一个问题,那便是当execlp()函数调用结束时,后面的代码也不再执行。该问题可通... 查看详情

linux下利用c或c++语言调用需要root权限的命令时候,怎么处理。

system这个函数只能调用普通权限的命令,怎么处理,多谢各位,急试试以下这种方式:1.root用户下将目标程序设置为root:root所有权;2.将目标程序设置为所有人可访问chmod777APPNAME;或者将目标用户加入root组等方式,使用户可执行... 查看详情

c函数后面多加两条下划线是干啥的?

...,我查了下函数定义格式,定义时候函数名后并没有两条下划线idxtype*idxmalloc(intn,char*msg)if(n==0)returnNULL;return(idxtype*)GKmalloc(sizeof(idxtype)*n,msg);问题就是为什么头文件要用“#define idxmallocidxmalloc__”重新定义idxmalloc而不出错?难道是... 查看详情

在 c 语言中调用函数时,啥时候应该添加“&”,啥时候不应该添加?

】在c语言中调用函数时,啥时候应该添加“&”,啥时候不应该添加?【英文标题】:whenshouldweadd\'&\'andwhenweshouldn\'twhilecallingafunctioninclanguage?在c语言中调用函数时,什么时候应该添加“&”,什么时候不应该添加?【发... 查看详情

跪求c语言函数调用的详细过程,函数之间是怎么传递的,到底是怎么发生调用的,最好是视频

...听不懂呢?相应的根本就没学习,又谈何学的好?学习C语言始终要记住“曙光在前头”和“千金难买回头看”,“千金难买回头看”是学习知识的重要方法,就是说,学习后面的知识,不要忘了回头弄清遗留下的问题和加深理... 查看详情

c语言中的回调函数(callbackfunction)

...了底层代码调用在高层定义的子程序(如图1-1所示)。C语言 查看详情

c语言中的回调函数(callbackfunction)

...了底层代码调用在高层定义的子程序(如图1-1所示)。C语言 查看详情

c语言函数调用完整过程(代码片段)

C语言函数调用详细过程函数调用是步骤如下:按照调用约定传参调用约定是调用方(Caller)和被调方(Callee)之间按相关标准对函数的某些行为做出是商议,其中包括下面内容:传参顺序:是从左往右传还是从右往左传参方式:是用寄... 查看详情

c语言源程序是由啥构成的

...某标识符为名字,其值可以改变的量。标识符是以字母或下划线开头的一串由字母、数字或下划线构成的序列,请注意第一个字符必须为字母或下划线,否则为不合法的变量名。变量在编译时为其分配相应存储单元。3、数组如... 查看详情

c语言函数调用三种方式:传值调用,引用调用和传地址调用(代码片段)

...,b=%d/n”,a,b)输出的结果:x=_,y=_a=_,b=_问下划线的部分应是什么,请完成。考题二:代码如下。Exchg2(int*px,int*py)inttmp=*px;*px=*py;*py=tmp;print(“*px=%d,*py=%d/n”,*px,*py);main()inta=4;intb=6;Exchg2(&am... 查看详情

c语言程序中子函数能不能调用子函数本身?

可以。嵌套调用或递归调用子函数。在C语言中,函数嵌套允许在一个函数中调用另外一个函数。例如funca()funcb();这个就叫做嵌套调用,它是一个语言提供的程序设计的方法,也就是语言的特性。而递归,是一种解决方案,一种思... 查看详情

《逆向工程核心原理》---函数调用约定(代码片段)

...平衡由调用函数来维护。C语言编译时的函数命名规则为下划线加名称:__functionName1_function2pushebp3movebp,esp4moveax,[ebp+8];参数15addeax,[ebp+C];加上参数26popebp7retn8_main9pushebp10movebp,esp11push14h;参数2入栈12push0Ah;参数1入栈13call_function;调用函... 查看详情

《逆向工程核心原理》---函数调用约定(代码片段)

...平衡由调用函数来维护。C语言编译时的函数命名规则为下划线加名称:__functionName1_function2pushebp3movebp,esp4moveax,[ebp+8];参数15addeax,[ebp+C];加上参数26popebp7retn8_main9pushebp10movebp,esp11push14h;参数2入栈12push0Ah;参数1入栈13call_function;调用函... 查看详情

单片机 c语言,如何调用外部自定义函数。

...术A函数定义好以后,要被其它函数调用了才能被执行。C语言的函数是能相互调用的,但在调用函数前,必须对函数的类型进行说明,就算是标准库函数也不例外。标准库函数的说明会被按功能分别写在不一样的头文件中,使用... 查看详情

c语言不同文件的函数如何相互调用

用c语言编写一个程序,其中有四个函数,一个main,其他三个为功能性函数,现在我要把他们分别放在四个文件中,用main调用其他三个,怎样实现???我是用的TC,最好给我个详细的例子,解释得清楚,在追加高分,说道做到... 查看详情