c - How to reuse a literal in a char and a one-character string constant? -


i need specify argument short option (e.g. -f) both char , char[] constant in c code. in order maximize code reusage want declare variable allows me change value in 1 place (a "literal" - not stringly speaking string or char literal, in sense of abstract concept). prefer solution solves exclusively in preprocessor constants , functions/macros or exclusively in c code explanation why has solved in mixture of both.

i tried/checked out

  • to #define foreground_option_value 'f' causes me trouble transform char[] (as preprocessor constant) (writing macro stringifies # causes ' quotes stringified well
  • to omit ' quotes leaves me problem of creating ' quotes or create char way.
  • @pedrowitzel's answer declare char[] , use 0th char constant. that's fine, i'd prefer way create char[] char because enforces both equal (otherwise i'd have add compile time assertion char[] isn't longer 1).

the thing matters me code maintenance, nothing else (like cost in processing code (during compilation or runtime - have not reflected intensively if there , don't care)).

over , above discussion in comments pedro witzel's answer, there's option:

#define foreground_option_value 'f'  static const char fg_opt_str[] = { foreground_option_value, '\0' }; 

it's not commonly used way of initializing string, valid 1 , seems appropriate scenario. can use foreground_option_value need constant char (or int) value, , fg_opt_str need one-character string. if change value defined (to f, say), have change 1 place code continue work, assuming weren't using f before, meets maintainability requirement.


Comments

Popular posts from this blog

asp.net mvc - SSO between MVCForum and Umbraco7 -

Python Tkinter keyboard using bind -

ubuntu - Selenium Node Not Connecting to Hub, Not Opening Port -