2017-06-22 80 views
-3

比方说,我有这样的程序:C/C++的宏定义选择应该运行什么程序

int main(){ 
    printf("program 1\n"); 
} 

int main(){ 
    printf("program 2\n"); 
} 

我如何定义一个宏,会帮我选择哪一个电源的运行?

理想情况下,我想定义一些东西为1(或2),应该打印“程序1”(或“程序2”)。

+0

这是不合法的代码,据我所知。有2条主线几乎肯定是一个错误。你不能只传入一个参数来指定程序的哪一部分运行? – Carcigenicate

+0

你想用这个做什么?有2个主要是一个错误,应该相当于有2个不同的程序 – Amadeus

+0

我可以,但我想知道这是否可能。到目前为止,有一些有趣的宏观技巧。我只是这样做来测试一些代码应该做同样的事情 – Daniel

回答

2

使用#if围绕main()函数。

#if WHICHMAIN == 1 
int main(){ 
    printf("program 1\n"); 
} 
#endif 

#if WHICHMAIN == 2 
int main(){ 
    printf("program 2\n"); 
} 
#endif 

然后,您可以编译程序与-DWHICHMAIN=1-DWHICHMAIN=2指定宏的值。

2

这就是我通常所做的:我创建一个名为my_config.h的配置文件,并在其中定义宏,例如#define TEST_MODE

和代码是这样的:

#include "my_config.h" 
int main() { 
    #ifdef TEST_MODE 
    return test_main(); 
    #else 
    return real_main(); 
    #endif 
} 
+0

这确实是一个不错的诀窍 – Daniel

相关问题