delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2009/05/14/08:56:32

X-Recipient: archive-cygwin AT delorie DOT com
X-SWARE-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL,BAYES_00
X-Spam-Check-By: sourceware.org
Message-ID: <4A0C14EF.30502@sbcglobal.net>
Date: Thu, 14 May 2009 12:56:15 +0000
From: Greg Chicares <gchicares AT sbcglobal DOT net>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
Subject: Re: Using rand_r
References: <guga4l$5qk$1 AT ger DOT gmane DOT org> <gugbct$7vf$1 AT ger DOT gmane DOT org>
In-Reply-To: <gugbct$7vf$1@ger.gmane.org>
X-IsSubscribed: yes
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

On 2009-05-14 05:49Z, Nicholas Sherlock wrote:
> David Billinghurst wrote:
>  > Nicholas Sherlock wrote:
>  >> Hey everyone,
>  >>
>  >> I'm trying to use the function rand_r with gcc-4 in Cygwin 1.7, all 
> my packages are up to date. It's supposed to be defined in stdlib.h, and 
> I can see it there. But if I compile a program which uses it, I get:
>  >>
>  >> warning: implicit declaration of function 'rand_r'.
>  >>
>  >> The reason seems to be the check for #ifndef __STRICT_ANSI__ in 
> stdlib.h. Even though I'm compiling with -std=c99, __STRICT_ANSI__ still 
> gets declared, so the definition of rand_r is unavailable. This seems to 
> be the same problem stated here:

'-std=c99' correctly gives a diagnostic because rand_r() is not in C99.

>  > Try -std=gnu99.  It doesn't define __STRICT_ANSI__
>  >
>  > This doesn't answer your question, unfortunately.
> 
> Thanks, that does solve my immediate problem. But I'm really hoping to 
> compile as vanilla C99 as I can manage, since I'll also be using my code 
> with non-GNU compilers.

If you want consistently identical results with different compilers,
then you'll need to write your own routine anyway (which you can do
in strictly-conforming C). See the rationale for myrand() here:
  http://www.opengroup.org/onlinepubs/000095399/functions/rand.html

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019