c - 使用预处理器定义的可选查找表

标签 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

最佳答案

或者尝试这样的事情:

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

这样你就没有任何未使用的头文件了,

关于c - 使用预处理器定义的可选查找表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53379030/

相关文章:

c - 将整数值作为字节值保存在 ansi c 的 char 中

c - 将字节的位写入 bin 文件

c - 制作 32 位计数器时出现全局变量问题

build - 如何在构建时在介子中运行自定义命令?

C: 运算符 -> 和 *

c - Zig-zag 迭代数组 - 速度优化

c - 在 C 中使用预处理器指令的大型数组

c++ - 在 C++ 中使用对空宏不执行任何操作的宏是否有目的?

c++ - 字符串化运算符失败

char 数组和指针初始化语义