[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Bug report: Compile with Microsoft and Intel compiler

From: Jerker Bäck
Subject: RE: Bug report: Compile with Microsoft and Intel compiler
Date: Wed, 27 Apr 2005 01:05:12 +0200

Hello Eli,

First quick answer:

> > Missing header:
> > #include <direct.h>    (for chdir)
> > place in make.h (ie line 364)
> Is <direct.h> the only header where chdir's prototype is declared?
> doesn't that compiler have it in unistd.h as well?  The 
> latter is where chdir's prototype lives on Posix platforms, 
> so if we could use the same with the MS compiler, it'd be better.
> If using <direct.h> is the only way, then it will have to be 
> conditioned on some MS-specific symbol, since this is a 
> non-standard header which other compilers don't have.

1) There is no unistd.h anywhere
2) direct.h defines to following:
int __cdecl _chdir(const char *);
char * __cdecl _getcwd(char *, int);
int __cdecl _mkdir(const char *);
int __cdecl _rmdir(const char *);
int __cdecl _chdrive(int);
char * __cdecl _getdcwd(int, char *, int);
int __cdecl _getdrive(void);
unsigned long __cdecl _getdrives(void);
unsigned __cdecl _getdiskfree(unsigned, struct _diskfree_t *);
And there is this:

#if     !__STDC__

/* Non-ANSI names for compatibility */

int __cdecl chdir(const char *);
char * __cdecl getcwd(char *, int);
int __cdecl mkdir(const char *);
int __cdecl rmdir(const char *);

#define diskfree_t  _diskfree_t

#endif  /* __STDC__ */

Note: Do you see now the effect of _MSC_EXTENSIONS visavi __STDC__? If I had
disabled the extensions and got __STDC__ defined to true, the compiler would
never had found the right prototypes for chdir et al (maybe using local
prototypes instead). Hopefully this would have been catched at link time,
otherwise a local replacement would have been used.

I will read on...

reply via email to

[Prev in Thread] Current Thread [Next in Thread]