⑩ NDK学习之预编译指令

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

 a.h
1
//#ifndef AH
2
//#define AH
3
//#include "b.h"
4
//void printA();
5
//#endif
6
7
#pragma once
8
#include "b.h"
9
void printB();
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
printf("%s\n","I am a little boy!");
预编译指令.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
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值