выбираемая таблица соответствия с использованием предпроцессорного определения - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть программа переменного тока, которая использует справочную таблицу, определенную в отдельном файле .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 голосов
/ 20 ноября 2018

Или попробуйте что-то вроде этого:

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

Таким образом, у вас нет неиспользуемых заголовочных файлов,

0 голосов
/ 19 ноября 2018

Я бы не смешивал файлы, которые не могли бы существовать в будущем, создавая бесполезные зависимости. Другой способ:

your_cfg_file.h:

#define CLEVEL75

your_clevel75_file.h:

#ifdef CLEVEL75
{your parameters}
#endif

your_clevel60_file.h:

#ifdef CLEVEL60
{your parameters}
#endif

... и так далее ...

...