在C预编译器中的实现之间切换

时间:2017-03-17 22:30:59

标签: c precompile

我在C语言编程方面相当新。我的问题是我有一个函数的两个实现,我希望能够轻松地在它们之间切换。

现在我将函数的两个实现定义为文件中的function_implementation1和function_implementation1" funtion_implementation1.h"和" funtion_implementation2.h"分别。要在它们之间切换,我有以下文件:

#define IMPLEMENTATION1

#ifdef IMPLEMENTATION_1
    #include "funtion_implementation1.h"
    #define myFunction function_implementation1
#endif

#ifdef IMPLEMENTATION_2
    #include "funtion_implementation2.h"
    #define myFunction function_implementation2
#endif

为了从一个实现切换到另一个,我只需要更改第一行。这种方法有效,我对它有一段时间感到满意,但现在我不得不经常打开这个文件。我有一个parameters.h文件,我在其中定义了所有参数,我宁愿选择在该文件中使用哪个实现。遗憾的是,将第一行移动到该文件不起作用。如果我这样做,myFunction没有定义。

这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:1)

你应该在你使用别名,宏等的地方包含你的参数文件:

#include "Parameters.h"

此外,所有标题文件都应以:

开头
#ifndef __FILE_H__
    #define __FILE_H__

// definitions go there

#endif

这可以防止嵌套包含头文件

答案 1 :(得分:1)

使用preprocessor options,特别是-D选项。如果要使用IMPLEMENTATION1,则在命令行(或IDE)中编译该文件时,请添加-D IMPLEMENTATION1。这定义了该宏。同样适用于任何宏