On Mon, Jan 14, 2013 at 1:31 PM, "René J.V. Bertin" <[email protected]> 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
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user