This is one usage I found in a open source software.And I don’t understant how it works.
when I ouput it to the stdout,it was “version 0.8.0”.
const char version[] = " version " "0" "." "8" "." "0";
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
This is a basic feature of both C89 and C++98 called ‘adjacent string concatenation’ or thereabouts.
Basically, if two string literals are adjacent to each other with no punctuation in between, they are merged into a single string, as your output shows.
In the C++98 standard, section §2.1 ‘Phases of translation [lex.phases]’ says:
This is after the preprocessor has completed.
In the C99 standard, the corresponding section is §5.1.2.1 ‘Translation Phases’ and it says:
The wording would be very similar in any other C or C++ standard you can lay hands on (and I do recognize that both C++98 and C99 are superseded by C++11 and C11; I just don’t have electronic copies of the final standards, yet).