用c ++编写的这段代码的含义是什么?
PGBulkInserter pgBulkInserter(postgreSQL, HOST_TRAFFIC_SCHEMA_NAME, date,
flushSize, "%ud, %ud, %ud, %ud, %ud, " \
"%ul, %ul, %Vul, %Vud, %Vud, %Vud, %Vul, " \
"%Vud, %Vud, %Vud, %Vud, %Vud, %ud, %ud, " \
"%ud, %ud, %ud");
我知道它正在创建PGBulkinserter
的实例,但%ul, %ud %vud
等的含义是什么?你能解释更深层的含义(即PGbulkinsterter
有多少参数等)?
我认为它们类似于%d, %f
等类型。有人知道%ud
是否代表%d
的无符号版本(我只是在猜测)。
编辑:我很确定%ud
是一个32位无符号十进制数,用于另一段代码中的时间。此外,"%ul, %ul, %Vul, %Vud, %Vud, %Vud, %Vul, "
与表中所有条目的类型相关。现在,问题是什么是\
?
答案 0 :(得分:1)
如果这应该是初始化(构造函数调用),那么它将5个参数传递给构造函数。最后一个参数是一个字符串文字。它没有特定于C ++的含义。它的意思是由功能决定的。阅读功能文档以了解其含义。它看起来类似于C风格的格式字符串(fscanf
/ fprintf
),但实际的说明符(如%Vud
)不是标准的。
最后一个参数实际上是跨多行分割的单个字符串文字。 C ++语言将连续的字符串文字(即由空格分隔的文字)连接成一个文字。例如,这个看似单独的文字序列
"Hel" "lo" " worl"
"d"
实际上被编译器解释为单个文字
"Hello world"
行尾的\
字符会使预处理器将多行源文件合并为一行。为此,\
字符必须是该行的最后一个字符(如您的示例所示)。例如,这个
in\
t\
ma\
in(\
)
相当于
int main()
换句话说,您的代码示例实际上等同于
PGBulkInserter pgBulkInserter(postgreSQL, HOST_TRAFFIC_SCHEMA_NAME, date, flushSize,
"%ud, %ud, %ud, %ud, %ud, %ul, %ul, %Vul, %Vud, %Vud, %Vud, %Vul, %Vud, %Vud, %Vud, %Vud, %Vud, %ud, %ud, %ud, %ud, %ud");
代码的作者显然认为,为了使编译器连接文字,必须先将它们强制为单行。为此,他们使用\
字符。但是,它完全没有必要,因为即使没有\
,文字也会被连接起来。
在您的特定代码示例中,您可以完全删除每行末尾的\
个字符,它对程序完全没有影响。有时候人们会使用那些\
只是为了引起人们的注意,即文字在下一行继续存在。