Mærkelig kode

Home Forums Projekter og designs Mærkelig kode

This topic contains 1 reply, has 2 voices, and was last updated by  Simon 4 years, 10 months ago.

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #1479

    nikolaj
    Participant

    Er der nogen der kan forklare dette fenomen? \n\nJeg har en funktions pointer (typedef void(*pTask)(void)). Når jeg kommer til dette stykke kode, kan jeg se, at pTask peger på den adresse, som jeg forventer, og hvis jeg sætter andet kode ind i if’en, bliver dette udført, men alligevel bliver funktionen ikke kaldt. \n\n

    \nif(_tasks[nextTaskToDispatch].pTask){\n	(*_tasks[nextTaskToDispatch].pTask)();\n}\n

    \n\n\nHvis jeg derimod rette en lille smule, og gemmer funktions pointeren i an midlertidig variabel, og kører den der fra, så virker det. \n\n

    \nif(_tasks[nextTaskToDispatch].pTask){\n	task_t *tp = _tasks[nextTaskToDispatch].pTask;\n	(*tp)();\n}\n

    \n\nEr der nogen der kan forklare hvad der sker?

    • This topic was modified 4 years, 10 months ago by  nikolaj.
    #1481

    Simon
    Keymaster

    Nu har jeg ikke brugt funktionspointere før, men kan det være fordi din funktion skal erklæres med en static, så adressen på funktionen aldrig kan ændre sig?

Viewing 2 posts - 1 through 2 (of 2 total)

You must be logged in to reply to this topic.

Go to Top