On Mon, Jan 14, 2013 at 1:31 PM, "René J.V. Bertin" <rjvber...@gmail.com> wrote: > On Jan 14, 2013, at 11:42, Alex Cohn wrote: >>> used later on. Semantics imposed by C++? >>> >>> R. >> >> An easy test proves that adding "-x c" to command line resolves the >> problem. So it is a C++ artifact. > > As I feared. > > Note that the OP's tst_gxx.cpp does a simple > av_err2str(AVERROR_BUG); > > i.e. stand-alone instead of using the function call as an argument to another > function as is stipulated in the doxygen doc for av_err2str in my version of > the code. Is it certain that the scope and type of a variable declared > (char[SIZE]){0} in a function argument list is well defined and identical > across all compilers? I personally find it an unreadable and ambiguous > construct... > > R
The C++ error does not go away if av_err2str() is wrapped into an argument to another function, as puts(av_err2str(AVERROR_BUG)); ... but I believe that the solution is simple: this macro should not be used in C++, that's it! Whoever needs similar functionality in g++, may use #undef av_err2str #define av_err2str(errnum) \ av_make_error_string((char*)__builtin_alloca(AV_ERROR_MAX_STRING_SIZE), AV_ERROR_MAX_STRING_SIZE, errnum) _______________________________________________ Libav-user mailing list Libav-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/libav-user