Это мой typedef struct
нужно удалить дополнительный аргумент при вызове функции
//command look up table structure
typedef struct
{
int commandCode;
int (*process_command) (...);
}cmdTableStruct;
Использование int (*process_command) (...);
нужно вызвать соответствующую функцию, которую я присваиваемое, что если матч с кодом команды.
ex.
static cmdTableStruct cmdTable[]=
{
{ 1123,testFunc},
// more command in same manner
};
здесь он будет вызывать testFunc
функцию, если команда кода 1123
и аргумент этой функции только один. То же самое он будет вызывать разные функции, но тип аргумента отличается, а аргумент - один.
Теперь с помощью int (*process_command) (...);
в stuct
определение он дает мне ошибку, как
Error: #xx: expected a type specifier
я могу устранить эту ошибку, добавив один известный аргумент типа
как
int (*process_command) (int x,...);
Но я не вам нужен дополнительный аргумент, я просто хочу, чтобы он принял один аргумент и функцию вызова с соответствующим типом данных.
есть предложения?
Эллипсис ('...') означает * ноль больше * аргументов. Функция, принимающая переменное число аргументов, должна * всегда * иметь хотя бы один действительный аргумент. Вот как работает система с переменными аргументами в C. Для отличного примера рассмотрим, например, ['printf'] (http://en.cppreference.com/w/c/io/fprintf), он объявлен как' int printf (const char * format, ...) ', и у вас все еще нет чтобы обеспечить больше, чем исходная строка. –
Для работы Varargs требуется хотя бы один именованный параметр, поэтому я думаю, что все. – Quentin
@JoachimPileborg да, но все мои функции ожидают только одного аргумента и имеют разные типы. –