other problem .... I try to copy my project on ubuntu 18.04 pc with gcc 7.4
.... I have a lot of warning .... the major issue seems stdio.hand cstdlib
is not well accept from qt + gcc7.4 ..... wath is the ideal version of gcc
for use with Linuxcnc file?

Il giorno ven 27 dic 2019 alle ore 18:47 N <nicklas.karlsso...@gmail.com>
ha scritto:

>   EMC_TASK_SET_STATE state_msg;
> There is no malloc because memory is allocated automatically then function
> is entered and deallocated automatically then it exit. It is allocated
> stack like and most probably on the stack but are not sure this is always
> the case.
>
> Local variable I consider the best method to allocate memory then it could
> be used for several reasons, usually most important because it is a local
> variable. But it also have advantage memory could be allocated with
> increasing pointer, this is fast and deterministic. Think ADA have a method
> so that pointer to allocated memory is not remembered by misstake at
> compile time but not C/C++. If you do not know what the stack is, it is a
> pointer to a memory set aside this purpose, then a function is called
> adress before jump is stored on stack while stack pointer is updated
> increased/decreased, then function exit it is the opposite order. malloc
> have to find a free area while stack like memory just increase/decrease a
> pointer but it only work for local variables in functions.
>
>
> Variable is initialized by row below although I are not sure all fields
> are initialized. Compiler may warn if it is not initialized but as I
> remember it will not warn if some fields are unitialized.
>   state_msg.state = EMC_TASK_STATE_ESTOP;
>
>
> malloc return a pointer to "void" which is more or less equivalent to
> pointer to unknown data type which must be the reason you get "no viable
> conversion from int to EMC_TASK_SET_STATE" warning. You have to use type
> conversion to get rid of warning (EMC_TASK_SET_STATE)malloc(...) and make
> sure correct size is allocated by using sizof(...) and you also have to
> remember deallocate/free memory then not used anymore but not before.
>
>
>
>
>
> > >
> > > Memory may be allocated with malloc but unless function
> > > emcCommandBuffer->write(...) store the pointer internally, copy data
> > > internally is below might be a much better idea. If state_msg variable
> is
> > > not used further down or at least is not supposed the block will also
> limit
> > > life time of variable.
> > >
> >
> > this row of code is extract from shcom.cc:
> >
> > int emcCommandSend(RCS_CMD_MSG & cmd)
> > {
> >     // write command
> >     if (emcCommandBuffer->write(&cmd)) {
> >         return -1;
> >     }
> >     emcCommandSerialNumber = cmd.serial_number;
> >     return 0;
> > }
> >
> > int sendEstop()
> > {
> >     EMC_TASK_SET_STATE state_msg;
> >
> >     state_msg.state = EMC_TASK_STATE_ESTOP;
> >     emcCommandSend(state_msg);
> >     if (emcWaitType == EMC_WAIT_RECEIVED) {
> > return emcCommandWaitReceived();
> >     } else if (emcWaitType == EMC_WAIT_DONE) {
> > return emcCommandWaitDone();
> >     }
> >
> >     return 0;
> > }
> >
> > but there is not malloc for state_msg and not see where is initialized
> ....
> >
> > In my row code is the same situation .... but if try to use malloc obtain
> > warning like "no viable conversion from int to EMC_TASK_SET_STATE" ....
> is
> > because I try to use malloc with bad variable type?
> > In my QtDro.h file I use these .hh file of Lcnc:
> >
> > #include "include/cmd_msg.hh"
> > #include "include/stat_msg.hh"
> > #include "include/emc_nml.hh"
> > #include <stat_msg.hh>
> > #include <cmd_msg.hh>
> > #include <nml.hh>
> > #include "emc.hh"               // EMC NML
> > #include "include/emcglb.h"             // EMC_NMLFILE,
> TRAJ_MAX_VELOCITY,
> > TOOL_TABLE_FILE
> > #include "include/emccfg.h"             // DEFAULT_TRAJ_MAX_VELOCITY
> > #include "inifile.hh"           // INIFILE
> >
> > Not understand how to initialize state_msg.
> >
> > thanks and good end of 2019 and new 2020 at all.
> >
> > bkt
> >
> > Il giorno gio 19 dic 2019 alle ore 17:54 N <nicklas.karlsso...@gmail.com
> >
> > ha scritto:
> >
> > > > just a guess.
> > > >
> > > > EMC_TASK_SET_STATE *state_msg;
> > > >
> > > > state_msg is a pointer, yet no memory allocated for it.
> > > >
> > > > state_msg->state = EMC_TASK_STATE_OFF;
> > > >
> > > > you try to write in a memory space that officially has no memory
> > > assigned yet.
> > > >
> > > > ju
> > > You are correct no memory assigned. Maybe no warning for using an
> > > unitialized variable, if turned a warning would be issued for using
> > > unitizialized variable.
> > >
> > > Memory may be allocated with malloc but unless function
> > > emcCommandBuffer->write(...) store the pointer internally, copy data
> > > internally is below might be a much better idea. If state_msg variable
> is
> > > not used further down or at least is not supposed the block will also
> limit
> > > life time of variable.
> > >
> > > {
> > >   EMC_TASK_SET_STATE state_msg;
> > >
> > >   state_msg.state = EMC_TASK_STATE_OFF;
> > >   state_msg.serial_number = ++emcCommandSerialNumber;
> > >   emcCommandBuffer->write(&state_msg);
> > > }
> > >
> > >
> > > _______________________________________________
> > > Emc-developers mailing list
> > > Emc-developers@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/emc-developers
> > >
> >
> > _______________________________________________
> > Emc-developers mailing list
> > Emc-developers@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/emc-developers
>
>
> --
> N <nicklas.karlsso...@gmail.com>
>
>
> _______________________________________________
> Emc-developers mailing list
> Emc-developers@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/emc-developers
>

_______________________________________________
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers

Reply via email to