[Ffmpeg-devel] Matroska Patch
Rich Felker
dalias
Fri Mar 24 19:22:51 CET 2006
On Fri, Mar 24, 2006 at 01:22:29AM +0000, M?ns Rullg?rd wrote:
> Rich Felker <dalias at aerifal.cx> writes:
>
> > On Thu, Mar 23, 2006 at 10:10:35AM +0100, Diego Biurrun wrote:
> >> > I disagree strongly. Renaming variables because of a broken compiler
> >> > simply hides bugs in the compiler. If people keep seeing that they
> >> > have to make workarounds when using broken compilers maybe they'll
> >> > complain to the compiler vendor or switch to a standards-compliant
> >> > compiler. If we just hide the bug it encourages people to use this
> >> > crap.
> >>
> >> This case is different IMO. The use of 'time' as variable name is
> >> problematic. You have to have a copy of the C standard lying around to
> >> check which uses are allowed and which aren't to avoid shooting yourself
> >> in the foot.
> >
> > No you don't. It's very clear. You're not allowed to use names from
> > the C library as external symbols. Any other use is just fine as long
> > as you don't include the header (in this case time.h).
>
> Even if you do include the header, using the names in local scope is
> fine, with the exception of object-like macros. Standard library
> functions are not allowed to be defined by the system headers as
> object-like macros, so using "time" as a local variable name will
> never be problematic in a conforming environment. The C99 standard
> makes this quite clear in sections 7.1.3-4.
Are you sure? I was going by SUSv3 which is supposedly aligned with
ISO C99. Reading the C99 draft, I have:
7.1.4 Use of library functions
[#1] ................................................... Any
function declared in a header may be additionally
implemented as a function-like macro defined in the header
I suppose this cannot cause conflicts with local variables though
since () is never valid after a variable name.
Rich
More information about the ffmpeg-devel
mailing list