01d
01d

Reputation: 55

why is RAND_MAX a macro in C++?

Why is it not a const? I think this is not a clear C++ way. Perhaps there is a more C++ way to generate random numbers, is there?

Upvotes: 0

Views: 738

Answers (3)

Jerry Coffin
Jerry Coffin

Reputation: 490218

It's a macro because it comes from C where it's been a macro for a long time.

  1. Boost random would be one alternative.
  2. TR1's random number generation classes would be another.
  3. Unlike most of TR1, the PRNG classes are being completely revised for C++0x.

Upvotes: 1

James McNellis
James McNellis

Reputation: 355089

RAND_MAX comes from the C standard library, where it is defined as a macro.

In C, macros are the way manifest constants are defined. A const object isn't actually a constant in C (this means a const object cannot be used in constant expressions).

Upvotes: 11

Yippie-Ki-Yay
Yippie-Ki-Yay

Reputation: 22814

If you're looking for a "more C++-way", you could use boost::random.

Anyway, RAND_MAX is a macro, because it comes from "legacy C" rand() function, where using preprocessor symbols for declaring constants was a de-facto standard.

Upvotes: 6

Related Questions