У меня есть простое приложение на языке c / c ++, которое имеет дополнительный интерпретатор TCL с обертками функций, сгенерированными с помощью SWIG. Для некоторых функций все аргументы являются необязательными. Как это обычно обрабатывается? Я хотел бы поддержать команду TCL, например, где любой из аргументов является необязательным, но функция C принимает фиксированные аргументы:
//TCL command
get_list [options] filename
-opt1
-opt2
-opt3 arg1
-opt4 arg2
filename
//C function
static signed get_list(bool opt1,
bool opt2,
char * arg1,
objectType * arg2,
char * fileName)
В настоящее время у меня есть что-то вроде этого:
static pList * get_list(char * arg1=NULL,
char * arg2=NULL,
char * arg3=NULL,
tObject * arg4=NULL)
Это имеет много проблем, таких как принудительное указание объекта всегда последний аргумент. В документации SWIG подробно говорится о функциях C с переменными аргументами, использующими «...», но я не думаю, что это то, что мне нужно. Я бы хотел, чтобы аргументы функции C были исправлены.