Android NDK基础9:C_预编译_宏定义_宏替换
include指令
#include <stdlib.h>
#include <stdio.h>
//预编译(预处理),为编译做准备工作,完成代码文本的替换工作
//C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include
//C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\crt\src
//头文件告诉编译器有这样一个函数,连接器负责找到这个函数的实现
void main() {
//#include "my.txt"
//printf("%s\n", "I am a little boy!");
}
my.txt
printf("%s\n", "I am a little boy!");
define指令
定义标示
//#ifdef __cplusplus 标识支持C++语法
防止文件重复引入
A.h
//老版本:如果没有定义AH,定义AH
//#ifndef AH
//#define AH
//#include "B.h"
//
//void printfA();
//
//#endif
//新版本:该头文件只被包含一次,让编译器自定处理好循环包含问题
#pragma once
#include "B.h"
void printfA();
B.h
//#ifndef BH
//#define BH
//#include "A.h"
//
//void printfB();
//
//#endif
#pragma once
#include "A.h"
void printfB();
main.c
#include <stdlib.h>
#include <stdio.h>
#include "A.h"
void printfA() {
printf("print A");
}
void main() {
printfA();
}
定义常数(便于修改与阅读)
#define MAX 100
//int MIN = 40;
void main() {
int i = 90;
if (i < MAX) {
printf("比MAX小..");
}
}
定义“宏函数”
void jni_read() {
printf("read\n");
}
void jni_write() {
printf("write\n");
}
//NAME是参数
#define jni(NAME) jni_##NAME();
//webrtc JNI函数名称很长,也是JOW宏函数缩短函数名称
//日志输出
//__VA_ARGS__可变参数
//#define LOG(FORMAT,...) printf(##FORMAT, __VA_ARGS__);
//日志会有级别
//#define LOG_I(FORMAT,...) printf("INFO:"); printf(##FORMAT, __VA_ARGS__);
//#define LOG_E(FORMAT,...) printf("ERRO:"); printf(##FORMAT, __VA_ARGS__);
//升级版本
#define LOG(LEVEL,FORMAT,...) printf(##LEVEL); printf(##FORMAT, __VA_ARGS__);
#define LOG_I(FORMAT,...) LOG("INFO:", ##FORMAT, __VA_ARGS__);
#define LOG_E(FORMAT,...) LOG("ERROR:", ##FORMAT, __VA_ARGS__);
#define LOG_W(FORMAT,...) LOG("WARN:", ##FORMAT, __VA_ARGS__);
//Android
//#define LOGI(FORMAT,...) __android_log_print(ANDROID_LOG_INFO, "jason", FORMAT, ##__VA_ARGS__);
//LOGI("%s","fix");
//替换
//__android_log_print(ANDROID_LOG_INFO, "yezhou", "%s", "fix");
void main() {
jni(write); //替换:jni_write();
LOG_I("%s%d", "大小:", 89);
//替换成:printf("INFO:"); printf("%s%d", "大小:", 89);
getchar();
}
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/25/android-ndk-basic-c-precompile-macro-definition-macro-replacement/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
THE END
0
二维码
打赏
海报
Android NDK基础9:C_预编译_宏定义_宏替换
include指令
#include <stdlib.h>
#include <stdio.h>
//预编译(预处理),为编译做准备工作,完成代码文本的替换工作
//C:\Program Files (x86……
文章目录
关闭
共有 0 条评论