NDK學習之預編譯指令

2021-08-10 07:42:36 字數 4454 閱讀 5162

檢視目錄

c:\program files (x86)\microsoft visual studio 11.0\vc\crt\src

專案目錄

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

//void printb();

//#endif

//該標頭檔案只被包含一次,讓編譯器自定處理好迴圈包含問題

#pragma once

#include "a.h"

void

printa(); //標頭檔案中負責宣告 實際的還是在c檔案中實現

my.txt

printf("%s\n","i am a little boy!");
預編譯指令.c

#include

#include

#include "a.h"

//c中做具體的

void

printa()

//替換的作用

/*

void main()

*/

//*************************===

//知識點:

//c語言執行的流程

//編譯:形成目標**(.obj)

//連線:將目標**與c函式庫連線合併,形成最終的可執行檔案

//執行

//預編譯(預處理),為編譯做準備工作,完成**文字的替換工作

//c:\program files (x86)\microsoft visual studio 12.0\vc\include

//c:\program files (x86)\microsoft visual studio 12.0\vc\crt\src

//標頭檔案告訴編譯器有這樣乙個函式,聯結器負責去找到這個函式的實現

//重點:

//巨集定義,巨集替換,預編譯指令

//#define 指令  

//1.定義標示

//#ifdef _cplusplus 標識支援c++語法

//防止檔案重複引入

/*

void main()

*/

//2.定義常數(便於修改和閱讀)

#define max 100;

//(不等同於全域性變數,因為沒有型別)

//3.定義巨集函式

一般的巨集函式

void

dn_com_jni_read()

void

dn_com_jni_write()

簡寫

//name是引數  ## 連線用的

#define jni(name) dn_com_jni_##name();

//webrtc jni函式名稱很長,也是jow巨集函式縮短函式名稱   

//例子

//android

//#define logi(format,...) __android_log_print(android_log_info,"jason",format,##__va_args__);

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

//替換

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

模仿

日誌輸出

__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__);

void

main()

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

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

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

//log_i

getchar();

}

C 預編譯指令之 region

region和 endregion是乙個區域注釋 注釋一段話.但是不是au3內建的語法。內建的注釋是 和 cs 與 ce 這是為了給編輯器識別 摺疊準備的。本身沒有任何意義,在編譯時候會被自動刪除。是為了讓我們在看 時能快速知道乙個功能是 開始,結束。region public class mycl...

C 預編譯指令

下面對c 中的預編譯指令進行介紹 1.define和 undef 用法 define debug undef debug define告訴編譯器,我定義了乙個debug的乙個符號,他類似乙個變數,但是它沒有具體的值,可以將它看為乙個符號而已。undef就是刪除這個符號的定義。如果符號debug沒定義...

pragma預編譯指令

它的作用是設定 編譯器的狀態或者是指示編譯器完成一些特定的動作。其格式一般為 pragma para。其中para 為引數,下面來看一些常用的引數 message 引數能夠在編譯資訊輸出視窗中輸出相應的資訊,這對於 源 資訊的控制是非常重要的。其使用方法為 1 pragma message 訊息文字...