[Cryptography] GCC bug 30475 (was Re:  bounded pointers  in C)
    Anton Titov 
    anton at titov.net
       
    Fri Apr 25 04:03:55 EDT 2014
    
    
  
On 25.04.2014 09:31, Stephan Neuhaus wrote:
> #include <stdint.h>
>
> #if sizeof(ptrdiff_t) == 4
> #  define PTRDIFF_T_MAX INT32_MAX
> #elif sizeof(ptrdiff_t) == 8
> #  define PTRDIFF_T_MAX INT64_MAX
> #else
> #  error Your ptrdiff_t has a weird size
> #endif
You can not use sizeof() in macro. The preprocessor would have to parse 
your structures in order to know sizeof-s and it does not. You can of 
course do:
#define PTRDIFF_T_MAX 
(sizeof(ptrdiff_t)==4?INT32_MAX:sizeof(ptrdiff_t)==8?INT64_MAX:bad_ptrdiff_t_size())
This should be replaced during compilation with a constant. I believe 
that most compilers will not complain about non-existence of 
bad_ptrdiff_t_size(), but
if you are concerned you can always provide declaration only of this 
function, so compiling this on a weird platform without 
bad_ptrdiff_t_size will yield linking
error.
Anton
    
    
More information about the cryptography
mailing list