Я использую директиву препроцессора __BASE_FILE__
в моем проекте C, построенном с помощью GCC. Проблема в том, что двоичный файл, созданный двумя разными компьютерами, должен быть идентичным, поэтому путь не может появиться в создаваемом двоичном файле.Получение имени файла без пути в двоичном файле с помощью gcc
Я не могу найти способ сжать строку, возвращаемую __BASE_FILE__
(содержащую полный путь к файлу) во время предварительной обработки. Есть ли способ сделать это ?
Эта строка используется внутри макроса, как это:
#define MY_MACRO() \
{ \
int file_name_size = sizeof(__BASE_NAME__); \
char* file_name = __BASE_NAME__; \
\
a_function_that_use_these_variables(file_name, file_name_size); \
}
Так что я хотел бы иметь __BASE_FILE__
, который содержит только имя файла, а не путь.
Как насчет того, чтобы добавить '' -D__BASE_FILE_NAME __ = $ (notdir $ <) 'в' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' ? –
Это решение работает для меня! –