www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Checking if a flag was passed to the compiler

reply =?UTF-8?B?Tm9yZGzDtnc=?= <per.nordlow gmail.com> writes:
Is there a way to check in code whether a specific flag, -dip1000 
in my case, was passed to the compiler?
Mar 22 2018
parent reply Nicholas Wilson <iamthewilsonator hotmail.com> writes:
On Thursday, 22 March 2018 at 10:08:31 UTC, Nordlöw wrote:
 Is there a way to check in code whether a specific flag, 
 -dip1000 in my case, was passed to the compiler?
Most command line arguments that are detectable set a version, e.g. D_Coverage, unittest, assert,D_BetterC. I don't see dip1000 in LDC's list of version statements. You could do a !__traits(compiles, { something forbidden by dip1000} );
Mar 22 2018
parent reply Seb <seb wilzba.ch> writes:
On Thursday, 22 March 2018 at 12:02:40 UTC, Nicholas Wilson wrote:
 On Thursday, 22 March 2018 at 10:08:31 UTC, Nordlöw wrote:
 Is there a way to check in code whether a specific flag, 
 -dip1000 in my case, was passed to the compiler?
Most command line arguments that are detectable set a version, e.g. D_Coverage, unittest, assert,D_BetterC. I don't see dip1000 in LDC's list of version statements. You could do a !__traits(compiles, { something forbidden by dip1000} );
For reference and completeness, a simple example: ```d void main() { enum isDIP1000 = __traits(compiles, () safe { int x; int* p; p = &x; }); pragma(msg, isDIP1000); } ``` normal: https://run.dlang.io/is/RID7vh -dip1000: https://run.dlang.io/is/1yJfVQ (this could of course be fancier)
Mar 22 2018
parent =?UTF-8?B?Tm9yZGzDtnc=?= <per.nordlow gmail.com> writes:
On Thursday, 22 March 2018 at 14:58:56 UTC, Seb wrote:
 For reference and completeness, a simple example:

 ```d
 void main()
 {
     enum isDIP1000 = __traits(compiles, ()  safe {
          int x;
          int* p;
          p = &x;
     });
     pragma(msg, isDIP1000);
 }
 ```

 normal: https://run.dlang.io/is/RID7vh
 -dip1000: https://run.dlang.io/is/1yJfVQ

 (this could of course be fancier)
Thanks
Mar 22 2018