可以将两个由空格分隔的字符串传递给函数吗?需要解释

时间:2016-01-25 23:35:49

标签: c++ c

我在阅读PX4代码时看到了一个电话,

open(ACCEL_BASE_DEVICE_PATH "0", O_RDONLY)

其中,#define ACCEL_BASE_DEVICE_PATH "/dev/accel"

所以,open("/dev/accel" "0", O_RDONLY)

这甚至可能吗? "/dev/accel" "0"

我期待可能有预处理宏 ......但那很难找到..

1 个答案:

答案 0 :(得分:7)

连续字符串文字由预处理器连接。 这是合法的。

"/dev/accel" "0"会产生"/dev/accel0"

请注意,空格与此无关(但更具可读性),与"/dev/accel""0"相同。

另请注意,在c ++ 11中,由于用户定义的文字(UDL),有时可能需要空格

#define ZERO "0"
"/dev/accel"ZERO // Here space is require since C++11. else there is an other meaning.