2012-11-18 13 views
2

PGP 6.5.8 source code我看到這樣定義的函數:C函數定義參數列表中允許的時間和地點?

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.0

我把它未修改在Github上,但還可以在這裏下載:http://www.pgpi.org/products/pgp/versions/freeware/win32/6.5.8/

+4

這是一個錯誤,不會編譯。 – Mat

回答

1

在C,唯一的一次,你可以有時間在函數原型是函數接受可變數量的參數,並且總是用三個點作爲最後一個參數聲明來指定。括號之間任何其他點的使用都是語法錯誤。

例如:

void fn(int arg1,...);

0

這絕對是一個語法錯誤。

只有在定義了PGP_WIN32的情況下才啓用該代碼,但我懷疑這是相關的;我確定不會在Windows上編譯的代碼不會被髮布。

PGP軟件現由Symantec擁有,它使源代碼爲available only for peer review。我想知道他們是否故意引入了微不足道的語法錯誤,以使源代碼難以使用,同時使其易於查看。 (但許可協議似乎允許您編譯代碼。)