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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Помогите разобраться с динамическим выделением памяти, Как пристроить другой sbrk ???
Сергей Борщ
сообщение Dec 22 2006, 20:43
Сообщение #16


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(zltigo @ Dec 22 2006, 17:55) *
Цитата(Сергей Борщ @ Dec 22 2006, 16:20) *

Например я постоянно использую свое определение extern "C" __low_level_init(), но при этом никакой дополнительный хидер в main.cpp не включаю.

__low_level_init() не есть библиотечная функция а просто IARовский прибамбас, посему вполне логично
для него отсутствует прототип в библиотечных хидерах и IAR выдает просто болванку в которой все в одном флаконе с хидером. Описывать-же "свои" прототипы для стандартных библиотечных функций есть безобразие.
Прототипы = объявления, да. Но речь шла об определении = теле функции. Если по имени, параметрам и типу возвращаемого значения функция совпадает с библиотечной, то не вижу причины перед ее определением включать хидер с объявлением. Например в таком предельном случае когда под определение этой функции выделен отдельный исходный файл.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 22 2006, 20:59
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Сергей Борщ @ Dec 22 2006, 19:43) *
Если по имени, параметрам и типу возвращаемого значения функция совпадает с библиотечной, то не вижу причины перед ее определением включать хидер с объявлением.

Вот для того, дабы абсолютно гарантированно выполнялось "параметрам и типу возвращаемого значения функция совпадает с библиотечной" и следует включать штатные библиотечные хидеры.
Данный вырожденный случай:
Цитата
Например в таком предельном случае когда под определение этой функции выделен отдельный исходный файл.

абсолютно правилен и допустим и конкретно применен IARом для уже поминаемого ранее
__low_level_init() только вот к библиотекам не имеющим по определению файла с исходным текстом ну никакого отношения не имеет. Для библиотек отсутствие отдельного файла хидера невозможно.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 22 2006, 23:52
Сообщение #18


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(zltigo @ Dec 22 2006, 19:59) *
Цитата(Сергей Борщ @ Dec 22 2006, 19:43) *

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

Вот для того, дабы абсолютно гарантированно выполнялось "параметрам и типу возвращаемого значения функция совпадает с библиотечной" и следует включать штатные библиотечные хидеры.
Тут трудно не согласиться, хотя для С++ функии отличающиеся типом и/или количеством параметров суть есть разные функции. Так что 100% гарантии давать не должно. Правда не знаю, относится ли это к функциям с квалификатором extern "C"


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 23 2006, 00:45
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Сергей Борщ @ Dec 22 2006, 22:52) *
для С++ функии отличающиеся типом и/или количеством параметров суть есть разные функции.

Да в плюсах имя функции уродуется по полной программе и отражает, и параметры, и возвращаемое значение. Пару раз приходилось С++ функцию вызывать из ASM - разборки по полной программе sad.gif
Цитата
Так что 100% гарантии давать не должно.

??? Точнее, надо полагать не нуждается в прототипе для 100% гарантии.
Цитата
Правда не знаю, относится ли это к функциям с квалификатором extern "C"

Не относится, к счастью smile.gif - обычное добавление подчеркивания. Зато и без прототипа работать моветон sad.gif. И при ошибке в прототипе проблемы по полной программе. Библиотечные функции естественно в "C" а не "C++" стиле со всеми вытекающими удобствами и последствиями.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 13:38
Рейтинг@Mail.ru


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