Код
typedef enum _CS_MemoryItemId_t
{
#define SEPARATOR(id)
#define DUMMY_MEMORY(id)
#define RAM_PARAMETER(id, addr) id,
#define FLASH_PARAMETER(id, addr)
#define MEMORY_REGION(id, addr)
#include "csParamTable.h"
#undef SEPARATOR
#undef DUMMY_MEMORY
#undef RAM_PARAMETER
#undef FLASH_PARAMETER
#undef MEMORY_REGION
CS_FLASH_PARAMETERS_START_ID,
#define SEPARATOR(id)
#define DUMMY_MEMORY(id)
#define RAM_PARAMETER(id, addr)
#define FLASH_PARAMETER(id, addr) id,
#define MEMORY_REGION(id, addr)
#include "csParamTable.h"
#undef SEPARATOR
#undef DUMMY_MEMORY
#undef RAM_PARAMETER
#undef FLASH_PARAMETER
#undef MEMORY_REGION
#define SEPARATOR(id)
#define DUMMY_MEMORY(id) id,
#define RAM_PARAMETER(id, addr)
#define FLASH_PARAMETER(id, addr)
#define MEMORY_REGION(id, addr) id,
#include "csParamTable.h"
#undef SEPARATOR
#undef DUMMY_MEMORY
#undef RAM_PARAMETER
#undef FLASH_PARAMETER
#undef MEMORY_REGION
} CS_MemoryItemId_t;
{
#define SEPARATOR(id)
#define DUMMY_MEMORY(id)
#define RAM_PARAMETER(id, addr) id,
#define FLASH_PARAMETER(id, addr)
#define MEMORY_REGION(id, addr)
#include "csParamTable.h"
#undef SEPARATOR
#undef DUMMY_MEMORY
#undef RAM_PARAMETER
#undef FLASH_PARAMETER
#undef MEMORY_REGION
CS_FLASH_PARAMETERS_START_ID,
#define SEPARATOR(id)
#define DUMMY_MEMORY(id)
#define RAM_PARAMETER(id, addr)
#define FLASH_PARAMETER(id, addr) id,
#define MEMORY_REGION(id, addr)
#include "csParamTable.h"
#undef SEPARATOR
#undef DUMMY_MEMORY
#undef RAM_PARAMETER
#undef FLASH_PARAMETER
#undef MEMORY_REGION
#define SEPARATOR(id)
#define DUMMY_MEMORY(id) id,
#define RAM_PARAMETER(id, addr)
#define FLASH_PARAMETER(id, addr)
#define MEMORY_REGION(id, addr) id,
#include "csParamTable.h"
#undef SEPARATOR
#undef DUMMY_MEMORY
#undef RAM_PARAMETER
#undef FLASH_PARAMETER
#undef MEMORY_REGION
} CS_MemoryItemId_t;
Вот подключаемый в тело файл csParamTable.h:
Код
RAM_PARAMETER(CS_UID_ID, csPIB.macAttr.extAddr)
RAM_PARAMETER(CS_MAX_FRAME_TRANSMISSION_TIME_ID, csPIB.macAttr.maxFrameTransmissionTime)
RAM_PARAMETER(CS_MAC_TRANSACTION_TIME_ID, csSIB.csMacTransactionTime)
RAM_PARAMETER(CS_RF_TX_POWER_ID, csSIB.csRfTxPower)
RAM_PARAMETER(CS_MAX_NEIGHBOR_ROUTE_COST_ID, csNIB.maxNeighborRouteCost)
RAM_PARAMETER(CS_NWK_EXT_PANID_ID, csNIB.extendedPanId)
RAM_PARAMETER(CS_NWK_ADDR_ID, csNIB.networkAddress)
....
RAM_PARAMETER(CS_MAX_FRAME_TRANSMISSION_TIME_ID, csPIB.macAttr.maxFrameTransmissionTime)
RAM_PARAMETER(CS_MAC_TRANSACTION_TIME_ID, csSIB.csMacTransactionTime)
RAM_PARAMETER(CS_RF_TX_POWER_ID, csSIB.csRfTxPower)
RAM_PARAMETER(CS_MAX_NEIGHBOR_ROUTE_COST_ID, csNIB.maxNeighborRouteCost)
RAM_PARAMETER(CS_NWK_EXT_PANID_ID, csNIB.extendedPanId)
RAM_PARAMETER(CS_NWK_ADDR_ID, csNIB.networkAddress)
....
Суть сводится к тому, что по очереди id подставляются в enum тип сначала для всех RAM_PARAMETER, потом FLASH_PARAMETER и т.д.
То есть на выходе должны получить что-то типа:
Код
typedef enum _CS_MemoryItemId_t
{
CS_UID_ID,
CS_MAX_FRAME_TRANSMISSION_TIME_ID,
CS_MAC_TRANSACTION_TIME_ID,
CS_RF_TX_POWER_ID,
CS_MAX_NEIGHBOR_ROUTE_COST_ID,
CS_NWK_EXT_PANID_ID,
[b]CS_NWK_ADDR_ID[/b],
...,
CS_FLASH_PARAMETERS_START_ID,
...
} CS_MemoryItemId_t;
{
CS_UID_ID,
CS_MAX_FRAME_TRANSMISSION_TIME_ID,
CS_MAC_TRANSACTION_TIME_ID,
CS_RF_TX_POWER_ID,
CS_MAX_NEIGHBOR_ROUTE_COST_ID,
CS_NWK_EXT_PANID_ID,
[b]CS_NWK_ADDR_ID[/b],
...,
CS_FLASH_PARAMETERS_START_ID,
...
} CS_MemoryItemId_t;
Можно ли Eclipse как-то заставить всё же видеть такое определение? Или подскажите, где ещё может быть причина.
UPD:



Тему можно закрывать.