In the process of grading student programming projects, I discovered that whitespace can matter in how C code is compiled. Some programmers may be aware that strings can be concatenated together:
const char* t = "this string" " is one";
Because the whitespace is ignored. Furthermore, programmers may encode strings via macros, and replace the instance with the macro:
#define A_STRING " is one"
Now, in the latest version of g++, new C++ support can treat the item following the string literal as either a macro or a user defined literal. The compiler makes the determination based on whether there is whitespace.
const char* t = "this string"A_STRING; // compiler error
const char* t = "this string" A_STRING; // expected behavior
I like consistent use of whitespace in code for stylistic reasons, but introducing a singular dependency on whitespace is odd for C/C++, in contrast to python that is highly whitespace dependent.
No comments:
Post a Comment