Looking back on my post, I need to add additional context.  The message of 
containing the variable in question is...

message GeneratorStatus {
    optional int32 command = 1;
    optional bool is_generator_on = 2;
    optional bool is_generator_busy = 3;
    optional float current = 4;
}

The following encode the GeneratorStatus message...
    pGeneratorStatus->set_current(4.5);
    if (pGeneratorStatus->has_current())
        float CurrentReadback = pGeneratorStatus->current();

CurrentReadback is a very small number, certainly not 4.5.

Tracing into the Protec .h file the disassembled function 
_internal_set_current() the AX register is set to the instance of 
pGeneratorStatus (this pointer)  and stores the argument at AX+16h.  
Similarly the getter function _internal_current() set AX to the this 
pointer and sets the destination register to AX+18h.  The GeneratorStatus 
object member _current is a float and the generated code leading up to 
setting _current is correct, it is only the operand references that are not 
correct.

I have changed the scalar to double and uint32 to no avail.

It is obvious not a proto/Protec issue in that the generated C++ code is 
correct, but VS 2015 code generation anomaly.

I am hoping a group member has experienced this issue and might have a 
solution. Thank you.



-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/protobuf/6c41448b-4659-4c6e-ac8b-c2bf30830047n%40googlegroups.com.

Reply via email to