combine enums in different modules

c, enums

Solution

If it if acceptable to have one .h include the other, you can write

enum ModuleBSignals {
  modBSig1 = modASigN+1,   
  modBSig2,   
  ...
  modBSigM,   
};

The second enum will thus start just after the first one.

Added:

You can try parameterizing all your modules with a dummy first element:

#include "sig_start.h"  // Default one contains #define START 0

enum ModuleBSignals {
  modBSig1 = START,
...

And it becomes the responsibility of your build process to create a correct sig_start.h for each one of your modules directories. The N+1 th sig_start.h will contain

#include module1signals.h
...
#include moduleNsignals.h
#define START modNSigM+1

Problem

I got a number of modules that contain enums. (they hold signals that are used in a state-machine). moduleAsignals.h: ``` enum ModuleASignals { modASig1, modASig2, ... modASigN, }; ``` moduleBsignals.h: ``` enum ModuleBSignals { modBSig1, modBSig2, ... modBSigM, }; ``` Each module has an arbitrary number of signals. Now i would like to combine a random choice of modules in one application. The problem is, that all signals have to be globally visible and that the signals have to stay unique. Also there is a limit to the size of one signal (8bit), so i can't just give unique offsets to the single modules' enums. How can i combine the single enums into one without having to adapt the signal-header files for each application? One way would be to just put the elements (without "enum ... {") into a file and include these fragments, but this will result in code that the IDE can't understand and so will lead to some inconvenience.

Original source