Pointer v C++
Pavel Hudeček
edizon na seznam.cz
Pondělí Prosinec 12 13:15:49 CET 2022
Aha tak to je vtipný překvápko:-)
Docela často používám *(pointer++) = něco.
A nikdy mě nenapadlo, že priorita je taková, že tady ta závorka není
potřeba.
PH
Dne 12.12.2022 v 12:32 M. napsal(a):
> Zdravim
>
>
> skuste namiesto *maskedCnt toto (*maskedCnt).
>
> Ak to pomoze, vysvetlenie je tu:
>
> https://en.cppreference.com/w/cpp/language/operator_precedence
>
>
> M.
>
> On 12-Dec-22 11:56, Pavel Hudeček wrote:
>> unsigned char masks[10][SINGLE_CHIP_PIXSIZE];
>>
>> di je parametr a jako parametr projde ještě několika voláníma, na
>> začátku je:
>> for (unsigned n = 0; n < connectedDevCnt; n++) testFnThrCall(n, thli);
>> Kde n vstupuje do di v testFnThrCall. A tahle funkce pouští thready.
>> Pak následuje while, který počká až mají všechny hotovo.
>>
>> PH
>>
>> Dne 12.12.2022 v 11:35 Jan Waclawek napsal(a):
>>> masks[di] --> unsigned char *mask
>>>
>>> ako presne je deklarovane masks resp. di?
>>>
>>> wek
>>>
>>>
>>>
>>> ----- Original Message ---------------
>>>
>>> Subject: Pointer v C++
>>> From: Pavel Hudeček <edizon na seznam.cz>
>>> Date: Mon, 12 Dec 2022 11:25:07 +0100
>>> To: hw-list na list.hw.cz
>>>
>>>> Dobrý den vąem,
>>>> mějme funkci:
>>>> int maskDevAuto1(unsigned di, unsigned run, double time, unsigned
>>>> short
>>>> limit, unsigned char *mask, int *maskedCnt) {
>>>> ...
>>>> maskedCnt[0] = 0;
>>>> ...
>>>> for (n = 0; n < ...
>>>> ...
>>>> if (mask[n] == PXC_PIXEL_MASKED) maskedCnt[0]++;
>>>> }
>>>> ...
>>>> printf("maskDevAuto1: %d: time %.3f, limit %d, run %d, masked
>>>> %d\n", di, time, limit, run, maskedCnt[0]);
>>>> return 0;
>>>> }
>>>>
>>>> a ta je volaná z:
>>>>
>>>> int maskDevAuto(unsigned di, unsigned short limit) {
>>>> ...
>>>> int maskedCnt = 0;
>>>> ...
>>>> for (run = 0; run < 10; run++) {
>>>> rc = maskDevAuto1(di, run, times[run], 100, masks[di],
>>>> &maskedCnt);
>>>> ...
>>>> }
>>>> }
>>>>
>>>> Takhle to funguje. Proč to ale nefunguje, pokud místo maskedCnt[0] dám
>>>> *maskedCnt?
>>>> Umře buď ten if, nebo printf. Případně neumře, ale ten printf napíąe
>>>> hausnumero, klidně třeba záporný.
>>>>
>>>> Poznámky:
>>>> masks a times jsou globální pole.
>>>> maskDevAuto je volána z daląí funkce a ta je ve for cyklu spuątěna v
>>>> několika threadech s různým di.
Další informace o konferenci Hw-list