我在阅读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"
我期待可能有预处理宏 ......但那很难找到..
答案 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.