我想了解如何與我的40MHZ SPI收發器的DLL內部的函數接口。特別是我不確定我是否明白該功能是如何定義的以及它正在採取什麼輸入。我是C的初學者,所以你的專業知識對我真的很有幫助。需要C函數及其返回類型的說明
下面是我想了解的C驅動程序代碼。我假設該函數需要緩衝區指針,並且在我調用'c_ch_find_devices_ext'函數後用數據填充緩衝區,但我對返回類型感到困惑,因爲在API文檔中,返回類型是int,但是在這裏它似乎是返回功能本身?
static int (*c_ch_find_devices_ext) (int, u16 *, int, u32 *) = 0;
int ch_find_devices_ext (
int num_devices,
u16 * devices,
int num_ids,
u32 * unique_ids
)
{
if (c_ch_find_devices_ext == 0) {
int res = 0;
if (!(c_ch_find_devices_ext = _loadFunction("c_ch_find_devices_ext", &res)))
return res;
}
return c_ch_find_devices_ext(num_devices, devices, num_ids, unique_ids);
}
以下是關於'c_ch_find_devices_ext'的API文檔,是否準確?
Find Devices (ch_find_devices_ext) int ch_find_devices_ext (int num_devices, u16 * devices, int num_ids, u32 * unique_ids); Get a list of ports and unique IDs to which Cheetah devices are attached. Arguments num_devices: maximum number of devices to return devices: array into which the port numbers are returned num_ids: maximum number of device IDs to return unique_ids: array into which the unique IDs are returned Return Value This function returns the number of devices found, regardless of the array size.
它沒有返回該函數。這看起來像'return c_ch_find_devices_ext'。 Google「函數調用」。 –
通過指針調用C函數看起來與通常的「name」調用相同。即''c_ch_find_devices_ext(num_devices,devices,num_ids,unique_ids)'只是'(* c_ch_find_devices_ext)(num_devices,devices,num_ids,unique_ids)的快捷方式' – Matt
我投票結束這個問題作爲題外話,因爲它是平凡的答覆通過閱讀初學者的語言教程。 –