I personally like macros that that check for errors conditions and that goto 
exit on error, where resources can be cleaned up.  I think one thing missing 
from the existing macros was the ability to log issues, so I recently created 
VERIFY_OR_LOG_AND_EXIT which I have been happily using, for example

    ret = mbedtls_x509write_crt_pem(&outCertCtx, (uint8_t *)buf, sizeof(buf), 
mbedtls_ctr_drbg_random, &ctr_drbg);
    VERIFY_OR_LOG_AND_EXIT(TAG, 0 == ret, "Could not generate pem buffer for 
internal cert generation",  ERROR);

To me the code that takes this approach is clean and simple to read, and more 
consistent with respect to cleanup.

I for one would not want to lose those macros for production code :)

Cheers!
Steve

        



> On Mar 6, 2018, at 12:42 PM, Mats Wichmann <m...@wichmann.us> wrote:
> 
> On 03/06/2018 12:38 PM, Nash, George wrote:
>> I am not a fan of the VERIFY_SUCCESS macro. It is not prefixed with the OC_ 
>> which should be used for all iotivity macros to help prevent name collisions 
>> with macros from external projects.  Even with the prefix I think this is an 
>> internal macro that should not be exposed to the public APIs. I have seen 
>> some code recently that used the VERIFY_SUCCESS macro in sample code. The 
>> only reason it is building is because it is linking with internal headers. 
>> (not 100% sure about the non-public API statement)
>> 
>> We definitely should check where it is defined in multiple places and see if 
>> we can consolidate those definitions to a single definition.  If we cannot 
>> consolidate to one definition I would rename one of the usages.
>> 
>> Finally if nothing else works the #ifdef #undef // macro #endif option 
>> should be applied.
>> 
>> This is all opinion and I am open to other suggestions.
>> 
>> George Nash
> 
> the VERY_FUNNY (oops, VERIFY_SUCCESS) stuff should only be used for unit
> tests, no?  that style of macro would be pretty ugly for non-test code
> anyway as there tend to be embeded returns/goto-exits/etc in at least
> some of the series.  Production code, and even examples, would want to
> handle errors, not just bail.
> _______________________________________________
> iotivity-dev mailing list
> iotivity-dev@lists.iotivity.org
> https://lists.iotivity.org/mailman/listinfo/iotivity-dev

_______________________________________________
iotivity-dev mailing list
iotivity-dev@lists.iotivity.org
https://lists.iotivity.org/mailman/listinfo/iotivity-dev

Reply via email to