Автор Тема: Малък въпрос за lseek()  (Прочетена 6027 пъти)

remotex

  • Напреднали
  • *****
  • Публикации: 344
    • Профил
Re: Малък въпрос за lseek()
« Отговор #30 -: Aug 31, 2012, 18:35 »
bvbfan не си схванал нещо - нали ако го вижда точно този файл ще е същото като ако го включим явно т.к. и двата прототипа са в ЕДИН и същ файл компилатора ще избере правилния... та така-а-а... явно не ги взема оттук прототипите или ако е оттук тогава линкера има бъг и не линква правилната функция и то само когато хедъра не е включен явно.

Един translation unit си е един не може да го видиш само половината - независимо как - явно , неявно или през крив макарон. Какво ще ползваш от него и какво не е отделен въпрос

Предполагам че въобще не вижда нищо оттук ами става нещо друго, но както вече обявих - нямам време вече за такива "забавления".
« Последна редакция: Aug 31, 2012, 18:38 от remotex »
Активен

remotex

  • Напреднали
  • *****
  • Публикации: 344
    • Профил
Re: Малък въпрос за lseek()
« Отговор #31 -: Aug 31, 2012, 19:07 »
Понеже на никой друг явно не му се занимава - изпозагуби се нещо интерес към темата вкл. и от питащия...

Шошоне до къде стигна?
Аз днес пробвах с -Wall
и познай какво се случи

//без unistd.h
Код
GeSHi (Bash):
  1. zz.c:11:7: warning: implicit declaration of functionwrite[-Wimplicit-function-declaration]
  2. zz.c:79:5: warning: implicit declaration of function ‘lseek’ [-Wimplicit-function-declaration]
  3. zz.c:116:5: warning: implicit declaration of function ‘close’ [-Wimplicit-function-declaration]
  4.  

Интересното е че (без unistd.h) минава даже и това т.е. колкото си искам параметъра мога да сложа
Код
GeSHi (C):
  1. off_t off = lseek(fd, -10/*z*/, SEEK_SET, -10, -10, -10, -1, -1);

щото то си мисли че аз имплицитно тука я дефинирам :-)

интересното е обаче що не минава тогава тва
Код
GeSHi (C):
  1. off_t off = zgzgz(-10, -10, -10, -1, -1);
Код
GeSHi (Bash):
  1. /tmp/ccP2sYAo.o: In function `main':
  2. zz.c:(.text+0x66b): undefined reference to `zgzgz'
  3. collect2: error: ld returned 1 exit status

Явно бъг в gcc toolkit
към bvbfan по-горе - а на бас че ако gat3way си публикува неговия unistd.h от убунтото на което твърди че го няма тоя проблем и аз моя от Федора-та ми 17 64 бит обновена до последно и ще са еднакви - Тогава защо при него работи както се очаква а при мен не? ..и старите кучета кат gcc имат бубулечки понякога  ;D
« Последна редакция: Aug 31, 2012, 19:16 от remotex »
Активен

kifavi8024

  • Новаци
  • *
  • Публикации: 0
    • Профил
Re: Малък въпрос за lseek()
« Отговор #32 -: Aug 31, 2012, 21:51 »
Код:
Invoking: GCC C Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -std=gnu11 -MMD -MP -MF"working.d" -MT"working.d" -o "working.o" "../working.c"
../working.c: In function ‘main’:
../working.c:7:3: warning: implicit declaration of function ‘write’ [-Wimplicit-function-declaration]
../working.c:11:2: warning: implicit declaration of function ‘lseek’ [-Wimplicit-function-declaration]
../working.c:15:2: warning: implicit declaration of function ‘close’ [-Wimplicit-function-declaration]
Finished building: ../working.c
 
Building target: Working
Invoking: GCC C++ Linker
g++  -o "Working"  ./working.o   
Finished building target: Working

Еми и при мен дава това под Eclipse/Ubuntu 12/gcc4.7. Но отговора след пускане на exe-то пак си е:

Код:
lseek returned error!

Явно има някакъв проблем в по-стaрата версия на GCC. И изобщо защо автора не e споделил с какъв setup e?
Активен

spec1

  • Напреднали
  • *****
  • Публикации: 230
    • Профил
Re: Малък въпрос за lseek()
« Отговор #33 -: Aug 31, 2012, 22:44 »
  Не знам как никой не се сети да напердаши в скоби какъв
точно тип е подавания аргумент т.е.
   func( (short) -10, ....)   подава 16 -битово число със знак,
   func( (long) -10, ....)    подава 32 -битово число със знак
    и т.н.
   В тоя случай е много малко вероятно нещо да се обърка.
   Ако се съмнявате в типовете ,винаги може да се изп:  sizeof(...)
   И разбира се ,следите какво ви казва компилатора :
  предупреждения,грешки ...
Активен

shoshon

  • Напреднали
  • *****
  • Публикации: 497
    • Профил
Re: Малък въпрос за lseek()
« Отговор #34 -: Aug 31, 2012, 22:47 »
Първо искам сърдечно да благодаря на всички умни хора взели участие!

Хора, не съм загубил итнерес - на ден проверявам 10 пъти, но нямам време да пиша - в поправителна сесия съм и ми е яко спечен гъзъ.

А и аз от програмиране много не разбирам :). Просто ми направи леко впечатление, че задачката от лекциите не се получи точно както е по книжка :) Или поне така ми се струваше.

Имам нужда от ден два (поне до неделя вечер) да се поуспокоят нещата за да мога да обърна внимания на писанията ви.

Setup е както следва(Fedora 16):
# rpm -q gcc glibc glibc-devel kernel-headers
gcc-4.6.3-2.fc16.x86_64
glibc-2.14.90-24.fc16.9.x86_64
glibc-2.14.90-24.fc16.9.i686
glibc-devel-2.14.90-24.fc16.9.x86_64
kernel-headers-3.4.9-1.fc16.x86_64
#

После ще систематизирам какво съм научил, ще пусна един bug репорт и ще видим другите умни хора какво ще кажат :)
« Последна редакция: Aug 31, 2012, 23:01 от shoshon »
Активен

bvbfan

  • Напреднали
  • *****
  • Публикации: 1056
  • Distribution: KaOS
  • Window Manager: Plasma 5
    • Профил
Re: Малък въпрос за lseek()
« Отговор #35 -: Sep 01, 2012, 08:22 »
Цитат на: remotex
Аве, ти нещо не вдяваш от С, ми се струва. Няма никакъв бъг, ако искаш си напиши в кода lseek64 да си викнеш директно функцията. Тук във файла има, ако 64 битова ОС на която се компилира, lseek се заменя с с lseek64р кое не разбра  ???
Активен