使用预处理程序定义的可选查找表

时间:2018-11-19 16:35:42

标签: c embedded c-preprocessor lookup-tables

我有一个c程序,该程序使用在单独的.c文件中定义的查找表。

c程序实际上在PIC24H上运行,并使用MPLAB XC16编译器进行编译。这不是特别相关,只是它为我正在尝试做的事情提供了动力。

我想有几个查找表,每个查找表都在自己的.c文件中。然后,我想使用预处理器定义将哪个表加载到程序代码中。

我不确定同一.c文件中所有未使用的表是否会占用程序空间,或者编译器是否会忽略它们。

如果所有表都存储在程序代码中,这将占用宝贵的程序内存。

主要是我正在寻求有关实施选择性查找机制的建议。我在想以下内容,但不确定该如何实际工作。

#define CLEVEL 75 // CLEVEL may be in set {45 60 75}

#if (CLEVEL==45}
#include "clevel45.h"
#elseif (CLEVEL==60}
#include "clevel60.h"
#elseif (CLEVEL==75)
#include "clevel75.h"
#endif

2 个答案:

答案 0 :(得分:2)

或者尝试这样的事情:

level.c

#define CLEVEL 75 // CLEVEL may be in set {45 60 75}

#if (CLEVEL==45}
/*
parameter for level 45 ...
*/    

#elseif (CLEVEL==60}
/*
parameter for level 60 ...
*/    

#elseif (CLEVEL==75)
/*
parameter for level 75 ...
*/    

#endif

这样,您就不会有未使用的头文件了,

答案 1 :(得分:1)

我不会混合将来可能不存在的文件,从而造成无用的依赖。另一种方式:

your_cfg_file.h:

#define CLEVEL75

your_clevel75_file.h:

#ifdef CLEVEL75
{your parameters}
#endif

your_clevel60_file.h:

#ifdef CLEVEL60
{your parameters}
#endif

...等等...