2014-02-10 215 views
-1

我有一个函数定义为预处理功能不同的名称相同的功能

int abc() 
{ 
    // Some code here... 
} 

我需要整合可能具有相同的功能名称“ABC()”多个项目。我想有一个像

#if defined PREPROCESSOR1 
    int A_abc() 
#else 
    int abc() 
#endif 
    { 
     // Some code here... 
    } 

是否有可能预处理器拥有的,而不是在代码中的行改变线像宏替换此,?

+0

是'A'论据)函数'ABC('? – DevNull

+0

或者'a'是一个全局变量? – DevNull

回答

0

你可以这样做:

#ifdef PREPROCESSOR1 
#define ABC A_abc 
#else 
#define ABC abc 
#endif 

int ABC() 
{ 
    // Some code here... 
} 
+0

'a'被定义,但从未初始化。这段代码将打印出分配'a'空间的内存中的垃圾。 – DevNull

+0

@Dogbert我不认为这里的函数的主体是相关的。 – aldo

+0

@aldo我不同意。这个函数声明一个变量,然后递增它,但从不初始化它,这意味着它上面执行的所有操作都会形成一大组未定义或不安全的行为。另外,由于变量'a'是在函数体内定义的,既不是全局变量也不是函数参数,所以它保证结果是未定义的。 – DevNull