c语言条件编译的例子,C语言条件编译分析实例
C語言條件編譯分析實例
1、利用#ifdef / #endif 將程序功能模塊包括進去,以向某用戶提供該功能.
在程序首部定義#define HNLD:
#ifdef HNLD
include"n166_hn.c"
#endif
如果不許向別的用戶提供該功能,則在編譯之前將首部的HNLD加下劃線即可。
2、在每一個子程序前加上標記,以便追蹤程序的運行。
#ifdef DEBUG
printf(" Now is in hunan !");
#endif
3、避開硬件的限制。有時一些具體應用環境的硬件不一樣,但限于條件,本地缺乏這種設備,于是繞過硬件,直接寫出預期結果。具體做法是:
#ifndef TEST
i=dial();
//程序調試運行時繞過此語句
#else
i=0;
#endif
調試通過后,再屏蔽TEST的定義并重新編譯,即可發給用戶使用了。
有一個問題,如何確保使用的標識符在其他任何地方都沒有定義過?
通常編譯器提供商采用下述方法解決這個問題:用文件名做標識符,并在文件名中使用大寫字母、用下劃線代替文件名中的句點字符、用下劃線(可能使用兩條下劃線)做前綴和后綴。例如,檢查頭文件read.h,可以發現許多類似的語句:
#ifndef __READ_H__ //作為開頭的預處理指令則當它后面的宏名稱被定義過則編譯后一組否則編譯前一組
#define __READ_H__ //防止被重復定義
extern int num=0;
#endif __READ_H__
參看:C語言再學習 -- 標識符
擴展:extern "C"
通過 extern "C" 可以要求 C++ 編譯器按照 C方式處理函數接口,即不做換名,當然也就無法重載。
1) C 調 C++,在 C++ 的頭文件如下設置:
extern "C" int add (int x, int y);
extern "C" {
int add (int x, int y);
int sub (int x, int y);
}
//示例 add.h
#ifndef _ADD_H
#define _ADD_H
#ifdef __cplusplus
extern "C" {
#endif
int add (int ,int );
#ifdef __cplusplus
}
#endif
#endif
2)C++ 調 C,在C++ 的主函數如下設置:
extern "C" {
#include "chead.h"
}
//示例 main.cpp
#include
using namespace std;
extern "C" {
#include "05sub.h"
}
int main (void) {
int x=456,y=123;
cout << x << "+" << y << "="
<< sub(x, y) << endl;
return 0;
}
【C語言條件編譯分析實例】相關文章:
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的c语言条件编译的例子,C语言条件编译分析实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux lcd驱动调试 echo d
- 下一篇: 何樱c语言,C语言程序设计-电子教案-连