LINUX.ORG.RU

Сообщения Pew-pew

 

Как писать имена файлов в мейкфайлах?

У меня есть массив имён объектных файлов OBJECTS, и я его подставляю в правило:

a.out: $(OBJECTS)
	gcc $^

Оно работает до тех пор, пока в массиве OBJECTS не появится файл с именем, начинающимся на дефис. В таком случае получается ошибка, ведь GCC думает, что это опция.

Я пробовал писать подобные имена в виде "./-file.o", но make самовольно обрезает их до "-file.o". Я пробовал использовать псевдоопцию "--", но GNU Compiler Collection не поддерживает GNU стандарт на параметры командной строки, поэтому у него нет такой псевдоопции.

Что можно сделать, кроме как переименовать объектные файлы?

Pew-pew
()

Как правильно сохранять числа в файл?

Вопрос, наверное, платиновый, но я не нашёл на него ответа. Как правильно записать целое число в файл и прочитать его потом, да так, чтобы не быть зависимым от платформы?

В стандарте C описано, что целое может быть представлено в прямом и обратном порядках байт, а число со знаком аж тремя разными способами. Очевидно, что просто сделать

fwrite(&number, sizeof (number), 1, file);

будет чревато непереносимостью.

Если посмотреть, как этот вопрос решён в coreutils, то там можно обнаружить макрос, который при необходимости меняет порядок байт. Это самый правильный вариант? А как поступать с отрицательными?

Pew-pew
()

Как спрятать функции в статической библиотеке?

Чтобы сделать функцию невидимой снаружи объектного файла, нужно поставить перед ней static. А если мне необходима эта функция в другом объектном файле библиотеки, но не нужно, чтобы она была видна снаружи?

Я нашёл два решения:

- писать всю библиотеку в одном файле;

- использовать #include.

В обоих случаях получится один объектный файл и при любом изменении он будет перекомпилироваться целиком.

Есть рациональные решения?

Pew-pew
()

RSS подписка на новые темы