一:函数参数的传递原理: 函数参数以数据结构——栈,的形式存取,从右到左入栈。因此,我们只要知道了任意一个变量的地址,并且知道其他变量的类型,通过指针移位运算,就可以顺藤摸瓜,找到其他输入变量。 二:头文件<stdarg.h>中几个重要的宏定义如下: typedef char * va_list; ...
分类:
其他好文 时间:
2020-01-13 19:34:11
阅读次数:
95
全局变量的定义是会得到内存分配且可以被其他模块通过C语言中extern关键字调用的变量。所以,必须在 .C 或 .H 文件中定义,此种方法很容易导致错误。 以下为UCOSIII中定义全局变量的方法: 部分源码(Os.h文件中): #ifdef OS_GLOBALS #define OS_EXT #e ...
分类:
其他好文 时间:
2020-01-12 19:55:28
阅读次数:
328
在通过free()函数释放指针内存之后讲其指针置空,这样可以避免后面的程序对与该指针非法性的判断所造成的程序崩溃问题。释放空间,指针的值并没有改变,无法直接通过指针自身来进行判断空间是否已经被释放,将指针置空有助于判断一个指针所指向的空间已经被释放。 内存泄露: 例如:int *p = (int * ...
分类:
其他好文 时间:
2020-01-11 16:49:06
阅读次数:
87
宏编译 预处理头 ,经常可以在stdafx.h文件中出现宏定义 define WIN32_LEAN_AND_MEAN, 具体含义就是当项目中包含 include时去除一些头文件的包含。一个重要的演示 例子就是winsock2.h和windows.h之间有关于_WINSOCKAPI_的重复定义,如果定 ...
从0到NULL 在C++的世界中字面值0用来表示空指针,所以0可以当作所有指针类型的字面值。为了让语义更明确引入了 宏定义: 这说明了在C++中, 是被替换为0的(在一些实现中 可能被定义为0L),这是因为C++不允许 指针隐式转换为其它类型指针,但是允许0作为各指针类型的字面值常量。 这样做虽然能 ...
分类:
其他好文 时间:
2020-01-08 00:11:44
阅读次数:
159
#include <iostream>// 常量可用静态常量定义,也可使用宏定义#define sum 300#define dis 0.85#define price 95using namespace std; void discount(int num){ if (num * price <= ...
分类:
其他好文 时间:
2020-01-06 18:05:19
阅读次数:
93
1.##:用于拼接操作 实例: #include<stdio.h> #include<iostream> #define CONCAT(parm1,parm2) (parm1##parm2) int main() { int res = CONCAT(1, 2); printf("%d\n", re ...
分类:
编程语言 时间:
2020-01-01 16:35:58
阅读次数:
95
1.带参数的宏定义中,宏名和新参表之间不能有空格, 2.在带参数的宏定义中,形参参数不分配内存单元,因此不必作类型定义。而宏调用中的实参有具体值,要用它去代换形参,因此必须作类型说明。 #include<stdio.h> #include<iostream> #define MAX(a,b) (a> ...
分类:
编程语言 时间:
2020-01-01 15:11:22
阅读次数:
102
宏定义只是简单的字符串代换,是在预处理完成的,而typedef是在编译时处理的,它不是作简单的代换,而是对类型说明符进行重新命令。被命名的标识符具有类型定义说明的功能。 #include<stdio.h> #include<iostream> #define PIN1 char* typedef c ...
分类:
编程语言 时间:
2020-01-01 13:28:53
阅读次数:
80
官方文档网址:https://docs.unity3d.com/Manual/PlatformDependentCompilation.html Property: Function:UNITY_EDITOR Unity编辑器UNITY_EDITOR_WIN Windows 操作系统.UNITY_E ...
分类:
编程语言 时间:
2019-12-31 12:38:56
阅读次数:
99