Итак, я делаю C-программу, которая получает свою память из массива static unsigned char[M_SIZE]
, где M_SIZE
- макрос.Мне нужно изменить значение этого макроса с помощью команды make, чтобы кто-то мог скомпилировать программу с другим размером зарезервированной памяти в зависимости от аргументов, переданных make.
MyПример файла заголовка - DataStore.h
#ifndef DATA_STORE_H
#define DATA_STORE_H
#define M_SIZE 50000 // Need this to be configurable via make arguments
unsigned char* DataStore_get_buf(void);
unsigned char* DataStore_get_end(void);
void DataStore_inc_ptr(void);
#endif
Мой пример файла C - DataStore.c
#include "DataStore.h"
static unsigned char DataStore_BUFFER[M_SIZE];
static unsigned char* DataStore_PTR = DataStore_BUFFER;
unsigned char* DataStore_get_buf(void)
{
return DataStore_BUFFER;
}
unsigned char* DataStore_get_end(void)
{
return DataStore_BUFFER + M_SIZE;
}
void DataStore_inc_ptr(void)
{
DataStore_PTR++;
}
Итак, в основном мне нужен способ изменить M_SIZE до того, как программа будет скомпилирована с помощью некоторыхкоманда или некоторая конфигурация, которую можно передать в make.
Edit1:
Этот вопрос уникален, потому что мне нужен метод, чтобы не просто передать настраиваемое значение макроса, но обработать случай, в которомэто значение не передается как команда, а вместо этого используется значение макроса по умолчанию.