4 ms·
This could also be viewed as a comparison between two different styles of C++.
by slavik81 8y ago
This could also be viewed as a comparison between two different styles of C++.
- hawski 8y agoWith C99 it's not that obvious. Compound literals are outside of C++ standard. However GCC for example supports them, but a bit differently [0]. $ cat foobar.c #include <stdio.h> struct foo { int x; int y; }; int foobar(struct foo *f) { return f->x + f->y; } int main(int argc, char *argv[]) { (void)argc; (void)argv; printf("%d\n", foobar(&(struct foo){10, 20})); return 0; } $ gcc -Wall -Wcast-align -Wextra -pedantic -std=c99 foobar.c -o foobar && ./foobar 30 $ g++ -Wall -Wcast-align -Wextra -pedantic foobar.c -o foobar && ./foobar foobar.c: In function ‘int main(int, char**)’: foobar.c:17: warning: ISO C++ forbids compound-literals foobar.c:17: warning: taking address of temporary 30 $ # taking address of temporary means that it's undefined behavior [0] https://gcc.gnu.org/onlinedocs/gcc/Compound-Literals.html https://gcc.gnu.org/onlinedocs/gcc/Compound-Literals.html
- slavik81 8y agoThe stated he was only using the subset of C99 that could compile as C++.