C 巨集定義的影響範圍

2021-06-20 04:49:35 字數 992 閱讀 5064

做專案的時候發現,把頭檔案中的 printf 相關巨集定義去掉以後,裝置照常能夠通過串列埠輸出內容。為此,在 windows 下用vs2010寫了乙個最簡單的helloworld的測試程式。

define_test_lib.h

#ifndef __define_test_lib_h__

#define __define_test_lib_h__

#define debug_test /*根據巨集定義的不同,列印出不同的資訊*/

void printf_helloworld(void);

#endif

define_test_lib.c

#include #include "define_test_lib.h"

void printf_helloworld(void)

define_test_main.c

#include "lib\define_test_lib.h"

int main(void)

1. 使能 define_test_lib.h 中的debug_test 巨集定義

2. 失能 define_test_lib.h 中的debug_test 巨集定義

3. 分析

不管 debug_test 是否被使能,程式最後輸出的都是『helloworld 1』。這是因為生成庫檔案時,在預編譯期,函式『printf_helloworld()』的內容已經固定了,就是『printf("helloworld 1\n");』。所以,在生成庫以後,不論 debug_test 是否被定義,程式的輸出結果都是相同的。

C C 程式設計知識 巨集定義的有效範圍

在c c 中,巨集定義的有效範圍被規定為當前檔案內有效。當前檔案內有效 分為兩種情況,一種是定義在標頭檔案中,另一種是定義在原始檔中。1 在標頭檔案中的巨集定義,隨著標頭檔案一同被包含到原始檔中時,此時巨集定義在該原始檔中有效,當頭檔案中的巨集定義隨著該標頭檔案一起被包含到另乙個標頭檔案中,而這另乙...

C 巨集定義 巨集定義求面積

學過c語言的讀者,對巨集定義應該不陌生,同樣在c 中,也可以用巨集定義命令將乙個指定的識別符號來代表乙個字串,巨集定義的作用一般是用乙個短的名字代表乙個長的字串。一般形式為 define 識別符號 字串定義pi的符號常量 define pi 3.14在c 中還可以用 define命令定義帶引數的巨集...

C語言巨集定義和巨集定義函式

c語言巨集定義和巨集定義函式 巨集定義可以幫助我們防止出錯,提高 的可移植性和可讀性等。在軟體開發過程中,經常有一些常用或者通用的功能或者 段,這些功能既可以寫成函式,也可以封裝成為巨集定義。那麼究竟是用函式好,還是巨集定義好?這就要求我們對二者進行合理的取捨。我們來看乙個例子,比較兩個數或者表示式...