如何理解autosar中定义一些宏代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <stdio.h>
/*https://blog.csdn.net/lsllll44/article/details/111711344*/

/* AUTOMATIC 用来声明本地指针 */
# define AUTOMATIC

/* TYPEDEF 应该用来声明类型定义*/
# define TYPEDEF

/* STATIC 编译器的关键字 */
# define STATIC static
/*
rettype : 返回的类型
ptrtype :指针的类型
type :类型
vartype :变量的类型

memclass: 所属的类别
ptrclass:指针的类别
*/
/* 函数返回变量类型 */
# define FUNC(rettype, memclass) memclass rettype
/* 函数返回指向const的指针类型 */
# define FUNC_P2CONST(rettype, ptrclass, memclass) const rettype ptrclass * memclass

/* 函数返回指针类型 */
# define FUNC_P2VAR(rettype, ptrclass, memclass) rettype ptrclass * memclass

/* 指针的类型 */
# define P2VAR(ptrtype, memclass, ptrclass) ptrtype ptrclass * memclass

/* 指向const的指针的类型 */
# define P2CONST(ptrtype, memclass, ptrclass) const ptrtype ptrclass * memclass

/* const指针的类型 */
# define CONSTP2VAR(ptrtype, memclass, ptrclass) ptrtype ptrclass * const memclass

/* 指向const的const指针的类型 */
# define CONSTP2CONST(ptrtype, memclass, ptrclass) const ptrtype ptrclass * const memclass

/* 指向函数的指针的类型 */
# define P2FUNC(rettype, ptrclass, fctname) rettype ( * ptrclass fctname)

/* const变量类型 */
# define CONST(type, memclass) memclass const type
/* 变量类型 */
# define VAR(vartype, memclass) memclass vartype

#define myCode_1
#define MAIN_C
FUNC(void,myCode_1) myCode_PrintFun( CONSTP2CONST(char,myCode_1,MAIN_C) );

int main(void)
{
myCode_PrintFun("abcdef");
return 0;
}

FUNC(void,myCode_1) myCode_PrintFun( CONSTP2CONST(char,myCode_1,MAIN_C) iString) {
printf("%s\n",iString);
}

参考信息