Is there an explicitly defined limit on the size of numbers a compiler can handle when multiplying out constants?
#define val1 1000000000000000
#define val2 <some really really big number>
std::cerr << val1 * val2 << std::endl;
Would this generate an error due to numeric limits in c++ given a sufficiently large value for val2? Where/how is that limit defined if so?
It would be treat as an integer and so the maximum integer (defined in limits.h) would apply
If you want a large number use 1000…….0000L to define it as a long.