查看目录
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();
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
}