⑩ NDK学习之预编译指令

移动开发 waitig 437℃ 百度已收录 0评论

查看目录
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\crt\src

项目目录

 a.h

1

2

3

4

5

6

7

8

9

b.h

1

//#define BH

2

//#include "a.h" //使用""代表是本地的

3

//void printB();

4

//#endif

5

6

//该头文件只被包含一次,让编译器自定处理好循环包含问题

7

#pragma once

8

#include "a.h"

9

void printA(); //头文件中负责声明  实际的还是在C文件中实现

my.txt

1

预编译指令.c

1

#include<stdlib.h>

2

#include<stdio.h>

3

#include "a.h"

4

//C中做具体的

5

void printA(){

6

    printf("print A");

7

}

8

//替换的作用

9

/*

10

void main(){

11

    #include "my.txt"

12

    getchar();

13

    }

14

*/

15

//============================

16

//知识点:

17

//C语言执行的流程

18

//编译:形成目标代码(.obj)

19

//连接:将目标代码与C函数库连接合并,形成最终的可执行文件

20

//执行

21

22

//预编译(预处理),为编译做准备工作,完成代码文本的替换工作

23

//C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include

24

//C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\crt\src

25

26

//头文件告诉编译器有这样一个函数,连接器负责去找到这个函数的实现

27

28

//重点:

29

//宏定义,宏替换,预编译指令

30

//#define 指令  

31

//1.定义标示

32

//#ifdef _cplusplus 标识支持C++语法

33

//防止文件重复引入

34

/*

35

void main(){

36

    printA();

37

}

38

*/

39

40

//2.定义常数(便于修改和阅读)

41

#define MAX 100;//(不等同于全局变量,因为没有类型)

42

43

//3.定义宏函数

44

//3.1一般的宏函数

45

void dn_com_jni_read(){

46

    printf("read\n");

47

}

48

void dn_com_jni_write(){

49

    printf("write\n");

50

}

51

//3.2 简写

52

//NAME是参数  ## 连接用的

53

#define jni(NAME) dn_com_jni_##NAME();

54

//webrtc JNI函数名称很长,也是JOW宏函数缩短函数名称   

55

56

//例子

57

//Android

58

//#define LOGI(FORMAT,...) __android_log_print(ANDROID_LOG_INFO,"jason",FORMAT,##__VA_ARGS__);

59

//LOGI("%s","fix");

60

//替换

61

//__android_log_print(ANDROID_LOG_INFO, "jason", "%s", "fix");

62

63

////模仿

64

////日志输出

65

////__VA_ARGS__  可变参数

66

//#define LOG(FORMAT,...) printf(##FORMAT,__VA_ARGS__);

67

////日志会有级别

68

//#define LOG_I(FORMAT,...) printf("INFO:"); printf(##FORMAT,__VA_ARGS__); 

69

//#define LOG_E(FORMAT,...) printf("ERRO:"); printf(##FORMAT,__VA_ARGS__); 

70

71

//升级版本

72

#define LOG(LEVEL,FORMAT,...) printf(##LEVEL); printf(##FORMAT,__VA_ARGS__);

73

#define LOG_I(FORMAT,...) LOG("INFO:",##FORMAT,__VA_ARGS__);

74

#define LOG_E(FORMAT,...) LOG("ERROR:",##FORMAT,__VA_ARGS__);

75

#define LOG_W(FORMAT,...) LOG("WARN:",##FORMAT,__VA_ARGS__);

76

77

void main(){

78

79

    //int i = 90;

80

    //if (i < MAX){

81

    //  printf("比MAX小..");

82

    //}

83

    jni(read); // 替换:dn_com_jni_read();

84

    LOG_E("%s%d", "大小:", 89);

85

    //替换成:printf("INFO:"); printf("%s%d","大小:",89);

86

    //LOG_I

87

    getchar();

88

}


本文由【waitig】发表在等英博客
本文固定链接:⑩ NDK学习之预编译指令
欢迎关注本站官方公众号,每日都有干货分享!
等英博客官方公众号
点赞 (0)分享 (0)