
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
20.06.2005, 13:49
|
|||
|---|---|---|---|
fprintf помогите чайнику |
|||
|
#18+
Человеку не знающему С++ пришлось написать маленькую программу которая должна работать на Soleris-е. Написал. Теперь пришлось там поменять тип int на long. И тут-то возникла проблема. Есть такая строка fprintf(FILE_OUTPUT, "%i;", i4); где i4 переменная типа int. Теперь int сделали long. В исходящем файле кроме цифр появился еще какой-то мусор. На что надо менять "%i;" ? Или может мы не там ищем? До этой строки работает своя функция которая объявлена так int CompConv(unsigned char *c, long size) Результат этой функции присваивается i4. После замены int на long выходит warning: pp.c:402: warning: type mismatch with previous implicit declaration pp.c:291: warning: previous implicit declaration of `CompConv' pp.c:402: warning: `CompConv' was previously implicitly declared to return `int' вернули int. Переменная которая присваивается результату этой функции имеет тип long. Что будет если эта переменная будет больше чем int, ведь функция имеет тип int. Почему выходит warning и нужно ли игнорировать его и поставить тип функции long. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.06.2005, 14:02
|
|||
|---|---|---|---|
fprintf помогите чайнику |
|||
|
#18+
%i -> %li В предварительном объявлении функции исправить тип в соответствии с определением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.06.2005, 14:21
|
|||
|---|---|---|---|
fprintf помогите чайнику |
|||
|
#18+
Сори. Не понял. В каком это предварительном объявлении? Где это объявление находится? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.06.2005, 14:32
|
|||
|---|---|---|---|
|
|||
fprintf помогите чайнику |
|||
|
#18+
TuralСори. Не понял. В каком это предварительном объявлении? Где это объявление находится? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: plaintext 1. 2. 3. 4. 5. 6. 7. Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.06.2005, 14:45
|
|||
|---|---|---|---|
fprintf помогите чайнику |
|||
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.06.2005, 14:46
|
|||
|---|---|---|---|
fprintf помогите чайнику |
|||
|
#18+
Станислав C. тык warning выходит при замене int на long именно там. А если там оставить int то не выходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.06.2005, 18:39
|
|||
|---|---|---|---|
fprintf помогите чайнику |
|||
|
#18+
Функции использующиеся в разных модулях еще объявляют в заголовочных файлах "чего-то.h". Шарься по каталогам своей программы и смотри все *.h в одном из них будет запись: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.06.2005, 13:38
|
|||
|---|---|---|---|
fprintf помогите чайнику |
|||
|
#18+
Посмотрел MSDN по VC++ и увидел что там тип long и int32 одинакового размера - 4 байта. Я думал лонг 8 байт. Но видимо ошибся. На С под солярис тоже так? Если да то я хочу заменить лонг на 8-и байтовое число. На VC++ это int64. А как на С под солярис? Там я написал вместо long int64 но компилятор выдает ошибку. pp.c:87: `int64' undeclared (first use in this function) Как объявить переменную, что бы она была 8-и байтовым целым числом? Кстати проблема с мусором решена. Проблема была в другом. Но вот теперь осталась проблема, которую я выше описал. Еще тот, кто написал программу сказал, что никакого файла *.h нет. Я тоже смотрел и не нашел. Выше тоже ничего не описано. Странно, почему она выдает такой варнинг?... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.06.2005, 14:15
|
|||
|---|---|---|---|
fprintf помогите чайнику |
|||
|
#18+
не получилось pp.c:87: `int64_t' undeclared (first use in this function) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.06.2005, 14:19
|
|||
|---|---|---|---|
fprintf помогите чайнику |
|||
|
#18+
#include <stdint.h> ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.06.2005, 14:40
|
|||
|---|---|---|---|
|
|||
fprintf помогите чайнику |
|||
|
#18+
TuralПосмотрел MSDN по VC++ и увидел что там тип long и int32 одинакового размера - 4 байта. Я думал лонг 8 байт. Но видимо ошибся. На С под солярис тоже так? Если да то я хочу заменить лонг на 8-и байтовое число. На VC++ это int64. А как на С под солярис? Там я написал вместо long int64 но компилятор выдает ошибку. pp.c:87: `int64' undeclared (first use in this function) Как объявить переменную, что бы она была 8-и байтовым целым числом? Кстати проблема с мусором решена. Проблема была в другом. Но вот теперь осталась проблема, которую я выше описал. Еще тот, кто написал программу сказал, что никакого файла *.h нет. Я тоже смотрел и не нашел. Выше тоже ничего не описано. Странно, почему она выдает такой варнинг?... Не знаю про Солярис, но в моем Gentus Linux это так (long = 4 байт); 8 бит предоставляет тип long long... И вообще, посмотрите для начала файл limits.h (найдите через поиск), там все написано... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.06.2005, 19:06
|
|||
|---|---|---|---|
fprintf помогите чайнику |
|||
|
#18+
TuralЕще тот, кто написал программу сказал, что никакого файла *.h нет. Я тоже смотрел и не нашел. Выше тоже ничего не описано. Странно, почему она выдает такой варнинг?... Есть еще такой момент. Если нету предобъявления функции вообще, то компилятор попытается догадаться как эта функция будет объявлена. Делает он это по первому использованию функции, а когда доходит до собственно объявления и оно не совпадает с предположеным - ругается. "Предположительное" объявление всегда возвращает int, в принципе это может различаться в разных компиляторах, но я иного не встречал. Например такой код 100% даст предупреждение: Код: plaintext 1. 2. 3. 4. 5. 6. 7. long foo2(char *s); и все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.06.2005, 19:15
|
|||
|---|---|---|---|
fprintf помогите чайнику |
|||
|
#18+
White OwlЛечится очень просто, добавляешь в начало файла строку long foo2(char *s); и все. Я об этом выше уже писал, но не читают клик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.06.2005, 19:39
|
|||
|---|---|---|---|
fprintf помогите чайнику |
|||
|
#18+
ЗемлекопЯ об этом выше уже писал, но не читают А ты свой пример прокоментировал? Вооот! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&tablet=1&tid=2033114]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
77ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 210ms |
| total: | 408ms |

| 0 / 0 |
