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

 
 
> скрипт + gcc
antiwin
сообщение May 20 2009, 08:51
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 22
Регистрация: 20-05-09
Пользователь №: 49 303



Народ, такая проблема. Необходимо при компиляции определить сколько раз вызывается функция (foo), а так же передать переменную из препроцессора(скрипта) в код программы.
1111493779.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
antiwin
сообщение Jun 29 2009, 07:49
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 22
Регистрация: 20-05-09
Пользователь №: 49 303



Привет всем, такой вот проблем: как можно узнать адрес в ОЗУ выше которого стек не "перерастет"? Это нужно сделать на этапе компиляции.
И еще, можно ли в теле функции узнать тип возвращаемого значения т.е допустим определена функция void *foo(...), далее где то вызывается int *ptr=foo(...), как в теле foo узнать что это указатель на int?

Сообщение отредактировал antiwin - Jun 29 2009, 08:01
Go to the top of the page
 
+Quote Post
alx2
сообщение Jul 3 2009, 19:08
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091



Цитата(antiwin @ Jun 29 2009, 12:49) *
Привет всем, такой вот проблем: как можно узнать адрес в ОЗУ выше которого стек не "перерастет"? Это нужно сделать на этапе компиляции.
В общем случае это невозможно.
Цитата(antiwin @ Jun 29 2009, 12:49) *
И еще, можно ли в теле функции узнать тип возвращаемого значения т.е допустим определена функция void *foo(...), далее где то вызывается int *ptr=foo(...), как в теле foo узнать что это указатель на int?
Что "это"? smile.gif foo выполняется до присваивания, поэтому во время ее выполнения ptr еще не существует. Функция "знает" только то, что передается ей в качестве аргументов. Что потом произойдет с возвращаемым ей значением, она знать не может.
А позвольте полюбопытствовать, для чего нужно "знать" внутри функции, какому объекту будет потом присваиваться возвращаемое ей значение? Такое желание мне кажется довольно странным, и наводит на мысль, что на самом деле задача состоит в другом - обеспечении более строгой типизации. На C++ это решается множеством различных способов - например, вместо типа void* функция может возвращать экземпляр класса, содержащего методы преобразования указателя к нужному типу - но это никак не будет влиять на код функции. Или инстанцированием функции из шаблона - тут код функции будет сразу генериться с учетом нужного типа, но тип придется при каждом вызове указывать явно...

Сообщение отредактировал alx2 - Jul 3 2009, 19:10


--------------------
Всего наилучшего,
Alex Mogilnikov
Go to the top of the page
 
+Quote Post
antiwin
сообщение Jul 14 2009, 11:08
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 22
Регистрация: 20-05-09
Пользователь №: 49 303



Цитата(alx2 @ Jul 3 2009, 23:08) *
В общем случае это невозможно.

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

Цитата(alx2 @ Jul 3 2009, 23:08) *
А позвольте полюбопытствовать, для чего нужно "знать" внутри функции, какому объекту будет потом присваиваться возвращаемое ей значение?


Вобщем все просто, хочется написать альтернативу malloc ибо представляется она мне очень "глупой", ну не видит она где heap, а где stack. Кроме простого выделения памяти хочеться организовать минимальный менеджер памяти, способный дефрагментировать память. Конечно, об универсальном проекте речь не идет, но хотябы для "mega" с ОЗУ>500 байт. smile.gif

Цитата(Troll @ Jul 8 2009, 09:48) *
А для чего это надо?
И если уж работаете с указателями, то почему бы просто не выполнить явное преобразование типа
Код
int *ptr = (int*) foo();


В том и проблема, так как можно char* foo(), и int* foo(), и uin32_t* foo(), т.е заранее неизвестно какой тип указателя нужен.

Сообщение отредактировал antiwin - Jul 14 2009, 11:00
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- antiwin   скрипт + gcc   May 20 2009, 08:51
- - gotty   Код#!/bin/sh COUNT=0 for FILE in *.c do CUR...   May 20 2009, 09:14
- - antiwin   Спасибо за совет, будем посмотреть   May 21 2009, 05:45
|- - antiwin   Цитата(antiwin @ May 21 2009, 09:45) Спас...   May 21 2009, 08:23
|- - antiwin   Цитата(antiwin @ May 21 2009, 12:23) Не с...   May 22 2009, 06:24
||- - antiwin   Спасибо, прояснилось. Как я понимаю этот скрипт на...   May 25 2009, 06:02
||- - Сергей Борщ   Цитата(antiwin @ May 25 2009, 09:02) запи...   May 25 2009, 07:43
|||- - antiwin   Цитата(Сергей Борщ @ May 25 2009, 11:43) ...   May 25 2009, 11:11
|||- - Сергей Борщ   Цитата(antiwin @ May 25 2009, 14:11) То е...   May 25 2009, 14:33
|||- - antiwin   Цитата(Сергей Борщ @ May 25 2009, 18:33) ...   May 26 2009, 06:27
|||- - Сергей Борщ   Цитата(antiwin @ May 26 2009, 09:27) Я пр...   May 26 2009, 08:13
||- - gotty   Цитата(antiwin @ May 25 2009, 09:02) Спас...   May 25 2009, 07:47
|- - gotty   Первый обрабатывает препроцессором файл, второй от...   May 22 2009, 11:26
- - antiwin   p.s отвечаю не сразу. т.к дома нет инета.   May 25 2009, 07:39
|- - gotty    Цитата(antiwin @ Jul 14 2009, 14:08) В т...   Jul 14 2009, 11:30
|- - Сергей Борщ   Цитата(antiwin @ Jul 14 2009, 14:08) мене...   Jul 14 2009, 11:41
||- - AHTOXA   Наверное речь идёт о дефрагментации свободных учас...   Jul 14 2009, 13:05
|||- - gotty   Цитата(AHTOXA @ Jul 14 2009, 16:05) Наве...   Jul 15 2009, 06:22
||- - antiwin   Цитата(Сергей Борщ @ Jul 14 2009, 15:41) ...   Jul 16 2009, 08:42
||- - aesok   Цитата(antiwin @ Jul 16 2009, 12:42) Прос...   Jul 16 2009, 09:34
|||- - antiwin   Цитата(aesok @ Jul 16 2009, 13:34) А како...   Jul 16 2009, 11:58
|||- - aesok   Цитата(antiwin @ Jul 16 2009, 15:58) Кол-...   Jul 16 2009, 13:19
|||- - antiwin   Цитата(aesok @ Jul 16 2009, 17:19) объясн...   Jul 17 2009, 09:05
|||- - smac   Цитата(antiwin @ Jul 17 2009, 13:05) Не в...   Jul 17 2009, 10:19
|||- - antiwin   Цитата(smac @ Jul 17 2009, 14:19) Если ф-...   Jul 17 2009, 10:59
|||- - smac   Цитата(antiwin @ Jul 17 2009, 14:59) Усло...   Jul 17 2009, 15:33
|||- - antiwin   Цитата(smac @ Jul 17 2009, 19:33) Сомнева...   Jul 23 2009, 08:31
|||- - aesok   Цитата(antiwin @ Jul 23 2009, 12:31) .......   Jul 23 2009, 10:16
|||- - smac   Цитата(antiwin @ Jul 23 2009, 12:31) Коне...   Jul 23 2009, 10:55
|||- - antiwin   Цитата(smac @ Jul 23 2009, 14:55) Не вижу...   Jul 24 2009, 08:46
|||- - aesok   Цитата(antiwin @ Jul 24 2009, 12:46) Разн...   Jul 24 2009, 09:26
|||- - aesok   call-used call-saved   Jul 24 2009, 10:47
|||- - antiwin   Цитата(aesok @ Jul 24 2009, 13:26) Анализ...   Jul 27 2009, 08:52
|||- - Сергей Борщ   Цитата(antiwin @ Jul 27 2009, 11:52) Поче...   Jul 27 2009, 09:00
||- - Сергей Борщ   Цитата(antiwin @ Jul 16 2009, 11:42) К то...   Jul 16 2009, 09:54
|- - alx2   Прошу прощения за молчание - я в отпуске, сюда заг...   Jul 17 2009, 12:52
|- - antiwin   Цитата(alx2 @ Jul 17 2009, 16:52) А потом...   Jul 21 2009, 10:05
|- - Troll   Цитата(antiwin @ Jul 21 2009, 17:05) Вот ...   Jul 21 2009, 11:16
|- - alx2   Цитата(antiwin @ Jul 21 2009, 15:05) Попу...   Jul 21 2009, 19:52
|- - antiwin   Цитата(alx2 @ Jul 21 2009, 23:52) Если в ...   Jul 22 2009, 08:29
|- - alx2   Цитата(antiwin @ Jul 22 2009, 13:29) Да, ...   Jul 22 2009, 14:10
- - Troll   Цитата(antiwin @ Jun 29 2009, 13:49) И ещ...   Jul 8 2009, 05:48
- - Troll   Цитата(gotty @ Jul 15 2009, 13:22) Ну, ес...   Jul 15 2009, 10:28
- - Troll   ЦитатаСмысл задуманного как раз в том чтобы освобо...   Jul 17 2009, 10:48
- - Troll   Цитата(antiwin @ Jul 17 2009, 17:59) Осво...   Jul 17 2009, 13:58


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 16:05
Рейтинг@Mail.ru


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