Я хочу скомпилировать программу c под разными именами. В главном файле, у меня есть следующий макрос:Расширение динамического макроса внутри функции printf
#ifndef EXECUTABLE_NAME
#define EXECUTABLE_NAME "defaultname"
#endif
При компиляции с помощью GCC, я использую -D
переключатель, чтобы определить этот макрос (в том, что право термин?):
$ gcc main.c -DEXECUTABLE_NAME="newname"
Я не знаете, если -D работает нормально или нет, потому что, когда я пытаюсь сделать что-то вроде кода ниже ... он терпит неудачу ... Я не могу сказать, прикручен ли ключ -D или синтаксис использования макроса внутри printf()
неправильная функция:
printf("no or invalid arguments. usage: %s [0,255]\n", EXECUTABLE_NAME);
Я получаю эту ошибку:
main.c:48:57: note: in expansion of macro ‘EXECUTABLE_NAME’
printf("no or invalid arguments. usage: %s [0,255]\n", EXECUTABLE_NAME);
Любые предложения?
Предоставляет ли 'argv [0]' имя исполняемого файла, например. 'myapp' или что-то вроде'./myapp' или даже '/ path/to/myapp'? Мне нужно только чистое исполняемое имя приложения. –
Попробуйте и посмотрите, это специфичная для платформы. – Blindy
точно, вот почему я попробовал hardway –