реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Можно ли задать inline функцию, если она определена в другом файле?
demiurg_spb
сообщение Nov 16 2012, 11:19
Сообщение #16


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



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


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 16 2012, 11:49
Сообщение #17


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(demiurg_spb @ Nov 16 2012, 14:19) *
не совсем
Вам уже про 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

Понял, нужно читать помощь по Кейлу! sm.gif
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Nov 16 2012, 11:57
Сообщение #18


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(ViKo @ Nov 16 2012, 14:41) *
Это заменяет

?

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

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


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 16 2012, 12:04
Сообщение #19


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(MrYuran @ Nov 16 2012, 14:57) *
Нет, это просто защита от повторного включения внутри единицы компиляции, коей является c/cpp файл.
аналог #pragma once

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

То, что я показал, позволяет мне в одном общем file.h собрать заголовочные файлы для всех составляющих проекта, и потом подключать только его во все files.c.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th June 2025 - 02:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01376 секунд с 7
ELECTRONIX ©2004-2016