为何func("abc""def"); 编译

Val*_*ond 2 c++ compiler-construction standards

在我的代码中偶然发现了一个小姐,这个函数被调用了

func("text1" "text2");
Run Code Online (Sandbox Code Playgroud)

代替

func("text1", "text2");
Run Code Online (Sandbox Code Playgroud)

问题是它实际上编译并运行(MSVC 2008),两个字符串被视为一个(即对重载func的调用获取输入"text1text2").

这是正常的标准行为(即"abc""def"=="abcdef")还是不是?

Chr*_*uma 8

是的,这称为字符串文字串联,是C和C++编译器的一个特性.