OK. Your definition of D_LP64 is correct, it seems http://dlang.org/version.html is misleading here(it only talks about 64bit pointers). So D currently doesn't have a version which only says pointers are 64bit, but I guess people can always use void*.sizeof.

Are you sure that BYTES_BIG_ENDIAN is always valid? There's this in rs6000/rs6000.h:
```
/* This is used by rs6000_cpu_cpp_builtins to indicate the byte order
   we're compiling for.  Some configurations may need to override it.  */
#define RS6000_CPU_CPP_ENDIAN_BUILTINS()	\
      if (BYTES_BIG_ENDIAN)			\
	{					\
	  builtin_define ("__BIG_ENDIAN__");	\
[...]
```
I'm not sure what this means though.