2016-07-29 28 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与适当的值来定义在构建时被确定。那时,根据平台的不同,编译标志可以反映目标的平台类型。