2016-07-29 47 views
-1

在Python中我可以簡單地這樣做如何有選擇地包括頭文件

def func(): 
    if condition: 
     import something 
    else: 
     import somethingelse 

是否有標準的ANSI C這樣任何方式或標準約定?如果有幫助,當我在計算機上時,我需要打印語句,並且當我在嵌入式系統上時,打印語句不會關閉,因爲打印功能可能無法用於內部編譯器。

+0

ANSI C是無關緊要的。 C被標準化爲ISO9899,並且是2011年唯一有效的版本。並且有條件地包含文件可能不是正確的方式來執行您所期望的操作。沒有這些頭文件,你的代碼仍然會調用這個函數,但是沒有強制的原型。 (不管你是用「內部編譯器」來表達的) – Olaf

+0

當我找到解決方案的時候,我經常看到一些解決方案,包括Linux獨有的庫,比如sys \ stat.h。對不起,我沒有說清楚。我仍然在學習這個術語。此外,從這裏的答案看來,我可以簡單地包含具有空功能的原型,以減輕您帶來的問題。內部意味着「在組織內完成」。所以這意味着我們建立了它,它可能不包括某些東西。 –

+0

**外部庫與C標準無關。 (如果他們遵守ABI,他們甚至不需要用C寫成)。原型沒有定義任何東西。因此它們不是「空的」(無論這意味着對於例如應該返回結果的函數)。無論如何,它肯定不只是一個省略聲明,即標題的問題。在開始思考具體實施之前,您可能想要制定一個清晰的概念。 – Olaf

回答

2
#define SOME_CONSTANT 

#ifdef SOME_CONSTANT 

#include<header.h> 

#else 

#include<otherheader.h> 

#endif 
1

這通常是通過條件編譯完成的。

#if EMBEDDED == 1 
#define print_xxx(...) (void)0 
#endif 

無論EMBEDDED與適當的值來定義在構建時被確定。那時,根據平臺的不同,編譯標誌可以反映目標的平臺類型。