I\'m developing a hardware abstraction library for an embedded product using GCC C. Within the library there is a variable that should be read-only to the application that l
Within the library there is a variable that should be read-only to the application that links the library, but can be modified from within the compilation unit that defines it.
The solution is to use object-oriented design, namely something called private encapsulation.
module.h
int module_get_x (void);
module.c
static int x;
int module_get_x (void)
{
return x;
}
main.c
#include "module.h"
int main(void)
{
int value = module_get_x();
}
If the variable must be read-write inside the module, then this is the only proper way to do this. All other ways are just some flavour of spaghetti programming.