该代码用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, "
与表中所有条目的类型有关。现在,问题是什么是\
? 最佳答案
如果应该将其初始化(构造函数调用),则它将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");
该代码的作者显然认为,为了使编译器连接文字,必须首先将它们强制为一行。为此,他们使用了
\
字符。但是,这是完全没有必要的,因为即使没有\
,这些文字也将被串联起来。在特定的代码示例中,您可以完全删除每行末尾的
\
字符,这对程序绝对没有影响。有时人们无论如何都会使用这些\
来引起人们注意该文字在下一行继续的事实。关于c++ - %ud,%vud那些是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13909004/