c++ - Macro string concatenation -


i use macros concatenate strings, such as:

#define str1 "first" #define str2 "second"  #define strcat(a, b) b 

which having strcat(str1 , str2 ) produces "firstsecond".

somewhere else have strings associated enums in way:

enum class myenum {     value1,     value2 } const char* myenumstring[] = {     "value1string",     "value2string" } 

now following not work:

strcat(str1, myenumstring[(int)myenum::value1]) 

i wondering whether possible build macro concatenate #defined string literal const char*? otherwise, guess i'll without macro, e.g. in way (but maybe have better way):

std::string s = std::string(str1) + myenumstring[(int)myenum::value1]; 

the macro works on string literals, i.e. sequence of characters enclosed in double quotes. reason macro works c++ standard treats adjacent string literals single string literal. in other words, there no difference compiler if write

"quick" "brown" "fox" 

or

"quickbrownfox" 

the concatenation performed @ compile time, before program starts running.

concatenation of const char* variables needs happen @ runtime, because character pointers (or other pointers, matter) not exist until runtime. why cannot concat macro. can use std::string concatenation, though - 1 of easiest solutions problem.


Comments

Popular posts from this blog

commonjs - How to write a typescript definition file for a node module that exports a function? -

openid - Okta: Failed to get authorization code through API call -

thorough guide for profiling racket code -