we can concatenate adjacent string literals so:
puts( "abc" "def" );
however, msvc fails strange error when try this:
puts( ("abc") ("def") );
which means can single computation outputting string literal so:
puts( num_elements>125?"warning":"ok" )
but can't concatenate string literals output multiple of these, such as:
#define some_setting 0x0b //i wish there binary literals #define bit_str(x,n) ((x>>n)&1?"1":"0") #define bit_str4(x) bit_str(x,3) bit_str(x,2) bit_str(x,1) bit_str(x,0) ... puts( "initializing hardware setting: " bit_str4(some_setting) );
edit: question is... correct way concatenate compile time computed string literals?
bit_str(some_setting, 3)
, take example, can indeed computed on runtime: results (0?"1":"0")
, in turn results pointer constant string "0"
, not string literal longer.
string literals can concatenated, constant pointers constant strings can't. that's difference.
Comments
Post a Comment