在 C 预编译器中的实现之间切换
Switching between implementations in C precompiler
我是 C 语言编程的新手。我的问题是我有一个函数的两个实现,我希望能够在它们之间轻松切换。
现在我在文件"funtion_implementation1.h"和"funtion_implementation2.h"中分别定义函数的两个实现为function_implementation1和function_implementation1。要在它们之间切换,我有以下文件:
#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 未定义。
最好的方法是什么?
您应该在使用别名、宏等的地方包含参数文件:
#include "Parameters.h"
此外,您所有的头文件都应以:
开头
#ifndef __FILE_H__
#define __FILE_H__
// definitions go there
#endif
这可以防止头文件的嵌套包含
使用preprocessor options,特别是-D
选项。如果您想使用 IMPLEMENTATION1
,当您在命令行(或 IDE 中)编译该文件时,添加 -D IMPLEMENTATION1
。这定义了那个宏。同样适用于任何宏
我是 C 语言编程的新手。我的问题是我有一个函数的两个实现,我希望能够在它们之间轻松切换。
现在我在文件"funtion_implementation1.h"和"funtion_implementation2.h"中分别定义函数的两个实现为function_implementation1和function_implementation1。要在它们之间切换,我有以下文件:
#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 未定义。
最好的方法是什么?
您应该在使用别名、宏等的地方包含参数文件:
#include "Parameters.h"
此外,您所有的头文件都应以:
开头#ifndef __FILE_H__
#define __FILE_H__
// definitions go there
#endif
这可以防止头文件的嵌套包含
使用preprocessor options,特别是-D
选项。如果您想使用 IMPLEMENTATION1
,当您在命令行(或 IDE 中)编译该文件时,添加 -D IMPLEMENTATION1
。这定义了那个宏。同样适用于任何宏