Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C] Wat doet een uitroepteken met pointer?

Pagina: 1
Acties:

  • ktf
  • Registratie: Maart 2007
  • Laatst online: 16-11 15:04
Goedenavond,

Ik zat de code van het FLAC-project door te wroeten (gewoon, omdat het leerzaam is) en toen kwam iets naar mijn idee vrij vreemds tegen. Het gaat om code hier te vinden. Ik heb er even het een en ander uitgelaten om het leesbaar te krijgen, het is goed mogelijk om een verloop zoals dit te krijgen.

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
FLAC__bool process_subframe_([...], unsigned *best_subframe, [...]){
    [...]
    unsigned _best_subframe;
    [...]
    _best_subframe = 0;
    [...]
    _best_bits = evaluate_verbatim_subframe_(encoder, integer_signal, frame_header->blocksize, subframe_bps, subframe[_best_subframe]);

    _candidate_bits = evaluate_constant_subframe_(encoder, integer_signal[0], frame_header->blocksize, subframe_bps, subframe[!_best_subframe]);
    if(_candidate_bits < _best_bits) {
        _best_subframe = !_best_subframe;
        _best_bits = _candidate_bits;
    }
    [...]
    *best_bits = _best_bits;

    return true;
}

Ik heb gezocht, maar ik begrijp echt niet wat er gebeurd op regel 9 en 11. Wat doet dat uitroepteken daar? :? Er wordt toch zeker geen true of false aan _best_subframe toegewezen? Het gebeurd op nog een aantal plaatsen verderop in de code. Tussen regen 1 en 13 gebeurd er verder niets met _best_bits.

Alvast hartelijk dank!

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 21-11 14:01

deadinspace

The what goes where now?

Hoezo wordt er geen true of false aan _best_subframe toegewezen?

In je topictitel heb je het ook over een pointer, maar _best_subframe is helemaal geen pointer ;)

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

code:
1
2
FLAC__Subframe *subframe[2],
unsigned _best_subframe


Volgens mij zijn er maar twee subframes, dus als je waarde '1' hebt, wordt daar '0' van gemaakt, en vice versa.

!0 = 1 en !1 = 0

[ Voor 5% gewijzigd door Feanathiel op 04-04-2014 19:26 ]


  • ktf
  • Registratie: Maart 2007
  • Laatst online: 16-11 15:04
deadinspace schreef op vrijdag 04 april 2014 @ 19:24:
In je topictitel heb je het ook over een pointer, maar _best_subframe is helemaal geen pointer ;)
... juist, dat kwartje is dus niet gevallen. |:(
Feanathiel schreef op vrijdag 04 april 2014 @ 19:24:
Volgens mij zijn er maar twee subframes, dus als je waarde '1' hebt, wordt daar '0' van gemaakt, en vice versa.
Aha, juist, ik vat hem. Het is wel lekker ingewikkeld opgebouwd, want in principe kan FLAC tot 8 subframes hebben, maar deze 'twee' gaat dus over het zoeken voor de beste kandidaat van één van die max 8 subframes. Blijkbaar wordt de tot dan toe beste opgeslagen in één van de twee posities en de kandidaat in de andere. Lekker duidelijk :P

Maargoed, ik heb hem door. Bedankt!

[ Voor 5% gewijzigd door ktf op 04-04-2014 19:30 ]


  • Matis
  • Registratie: Januari 2007
  • Laatst online: 21-11 21:23

Matis

Rubber Rocket

Ik vind het altijd lastig als dezelfde variabele namen gebruikt worden binnen de functie en wanneer de underscore wordt voorgevoegd aan de variabele welke binnen de scope van de functie blijft (private, so to speak).
Dat leest gewoon niet lekker.

If money talks then I'm a mime
If time is money then I'm out of time