On Wed, Sep 11, 2013 at 11:41 PM, Jeff King <peff@xxxxxxxx> wrote: >> I'm on Windows using MSYS / MinGW. Since MinGW runtime version 4.0, >> string.h contains the following code (see [1]): >> >> #ifndef __NO_INLINE__ >> __CRT_INLINE int __cdecl __MINGW_NOTHROW >> strncasecmp (const char * __sz1, const char * __sz2, size_t __sizeMaxCompare) >> {return _strnicmp (__sz1, __sz2, __sizeMaxCompare);} >> #else >> #define strncasecmp _strnicmp >> #endif > > What is the error the compiler reports? Can it take the address of other The error message of GCC 4.8.1 is: LINK git-credential-store.exe libgit.a(mailmap.o): In function `read_mailmap': C:\mingwGitDevEnv\git/mailmap.c:238: undefined reference to `strcasecmp' collect2.exe: error: ld returned 1 exit status make: *** [git-credential-store.exe] Error 1 So it's a linker error, not a compiler error. > inline functions? For example, can it compile: > > inline int foo(void) { return 5; } > extern int bar(int (*cb)(void)); > int call(void) { return bar(foo); } I had to modify the example slightly to: inline int foo(void) { return 5; } extern int bar(int (*cb)(void)) { return cb(); } int main(void) { return bar(foo); } And this compiles. > Just wondering if that is the root of the problem, or if maybe there is > something else subtle going on. Also, does __CRT_INLINE just turn into > "inline", or is there perhaps some other pre-processor magic going on? This is the function definition from string.h after preprocessing: extern __inline__ int __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) strncasecmp (const char * __sz1, const char * __sz2, size_t __sizeMaxCompare) {return _strnicmp (__sz1, __sz2, __sizeMaxCompare);} -- Sebastian Schuberth -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html