为什么 func("abc" "def");编译

问题描述 投票:0回答:4

刚刚偶然发现我的代码中有一个错误,一个函数是这样调用的

func("text1" "text2");

而不是

func("text1", "text2");

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

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

c++ standards
4个回答
8
投票

是的,这称为字符串文字连接,是 C 和 C++ 编译器的一项功能。


4
投票

是的,这是正常行为。 它对于让字符串常量跨越多行非常有用。 您必须在某个地方有一个可以接受单个参数

char*
的“func”重载。


3
投票

是的,这是标准行为。


2
投票

是的,它对于基于

#define
s 构建字符串很有用。

#define MY_FOLDER "/some/folder/"
#define MY_FILE   MY_FOLDER "file.txt"
// expands to "/some/folder/file.txt"
© www.soinside.com 2019 - 2024. All rights reserved.