Перейти к содержанию
    

Можно ли задать inline функцию, если она определена в другом файле?

не совсем

Вам уже про LTO советовали, а я повторюсь, что и у Кейла есть галочка типа "link-time code generation" - это фактически аналог LTO от gcc.

В таком режиме все функции рассматриваются компилятором как static...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не совсем

Вам уже про LTO советовали, а я повторюсь, что и у Кейла есть галочка типа "link-time code generation" - это фактически аналог LTO от gcc.

В таком режиме все функции рассматриваются компилятором как static...

Не галочка - опция.

--ltcg

This option instructs the compiler to create objects in an intermediate format so that Link-Time Code Generation (LTCG) optimizations can be performed. The optimizations applied include cross-module inlining to improve performance, and sharing of base addresses to reduce code size.

 

Note

This option might significantly increase link time and memory requirements. For large applications it is recommended that you do the code generation in partial link steps with a subset of the objects.

 

The LTCG feature is deprecated. As an alternative ARM recommends you use the --multifile option.

 

Example

The following example shows how to use the --ltcg option.

 

armcc -c --ltcg file1.c

armcc -c --ltcg file2.c

armlink --ltcg file1.o file2.o -o prog.axf

 

Из галочек есть

Use Cross-module optimization

 

Понял, нужно читать помощь по Кейлу! :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это заменяет

 

?

Нет, это просто защита от повторного включения внутри единицы компиляции, коей является c/cpp файл.

аналог #pragma once

 

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, это просто защита от повторного включения внутри единицы компиляции, коей является c/cpp файл.

аналог #pragma once

 

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

То, что я показал, позволяет мне в одном общем file.h собрать заголовочные файлы для всех составляющих проекта, и потом подключать только его во все files.c.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...