2

PGP 6.5.8 源代码中,我看到一个函数定义如下:

static void
sUnlockMemory(
void *  mem,
PGPSize numBytes.
PGPBoolean  nonPageable )
{
/* we always call VirtualLock() so always call VirtualUnlock() */
(void)wasLocked;

VirtualUnlock ( mem, numBytes );
}

注意第 4 行末尾的句点。它有什么作用?我可以用逗号代替它吗?该文件标记为 1999 年 8 月最后一次修改。生成说明参考 Visual C++ 6。

我把它原封不动放在 Github 上,但也可以在这里下载:http ://www.pgpi.org/products/pgp/versions/freeware/win32/6.5.8/

4

2 回答 2

1

在 C 语言中,函数原型中唯一可以有句点的情况是函数接受可变数量的参数时,并且始终使用三个点作为最后一个参数声明。括号之间的任何其他使用点都是语法错误。

例如:

无效 fn(int arg1, ...);

于 2012-12-28T04:28:48.093 回答
0

这绝对是语法错误。

该代码仅在PGP_WIN32定义时才启用,尽管我怀疑这是否相关;我敢肯定不会发布在 Windows 上无法编译的代码。

PGP 软件现在归赛门铁克所有,这使得源代码仅供同行评审使用。我想知道他们是否故意引入了琐碎的语法错误,以使源代码难以使用,同时使其易于查看。(但许可协议似乎允许您编译代码。)

于 2012-12-28T04:46:54.553 回答