We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi,
I can not get through with ROM-based constants.
When I put a definition:
const char txtParcer_OK[] = "ok! this is sample message ...";
the compiler resides the message in RAM area. I need ROM area.
I use µVision V4.20.03.0 Tool Version Numbers: Toolchain: MDK-ARM Standard Version: 4.20 Toolchain Path: BIN40\ C Compiler: Armcc.Exe V4.1.0.644 Assembler: Armasm.Exe V4.1.0.644 Linker/Locator: ArmLink.Exe V4.1.0.644 Librarian: ArmAr.Exe V4.1.0.644 Hex Converter: FromElf.Exe V4.1.0.644 CPU DLL: SARMCM3.DLL V4.20 Dialog DLL: DARMCM1.DLL V1.7.0.0 Target DLL: Bin\Nu_Link.dll V1.18 Dialog DLL: TARMCM1.DLL V1.06
Best regards, Alex.
Strange that the compiler does not give a warning in such a case. It would be generally nice, if the compiler would produce some more warnings .... (empty code, ambiguous operator order).
Not at all!
#define const
It just means that the 'const' keyword was effectively stripped from the source code by the preprocessor. Since 'const' was purely optional in all the cases tried, there was nothing to warn about!
eg,
const char acText[]= "Hallo";
just becomes
char acText[]= "Hallo";
and
static const acText[]= "...";
static acText[]= "...";
char txtParcer_OK[] = "ok! this is sample message ...";
BTW: There is nothing in the 'C' language definition that requires the compiler to put const items into read-only memory...
Yes. Stupid error, but that is it.
Thank you for the advice.
Alex.