gpt4 book ai didi

c++ - %ud, %vud​​ 那些是什么

转载 作者:太空宇宙 更新时间:2023-11-04 12:01:32 26 4
gpt4 key购买 nike

这段用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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com