3 ms·
Smells like UB. Is this defined in the standard?
by p0w3n3d 2y ago
Smells like UB. Is this defined in the standard?
- harrison_clarke 2y agoC99 spec, section 6.5.2.5: https://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf https://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf > 6. The value of the compound literal is that of an unnamed object initialized by the initializer list. If the compound literal occurs outside the body of a function, the object has static storage duration; otherwise, it has automatic storage duration associated with the enclosing block. it's valid until the end of the block. so, if the function returns the pointer, you can even use that until the end of the block there's actually an example in the spec, on that page: > drawline(&(struct point){.x=1, .y=1}, &(struct point){.x=3, .y=4});