digitalmars.D.learn - Checking if a flag was passed to the compiler
- =?UTF-8?B?Tm9yZGzDtnc=?= (2/2) Mar 22 2018 Is there a way to check in code whether a specific flag, -dip1000
- Nicholas Wilson (6/8) Mar 22 2018 Most command line arguments that are detectable set a version,
- Seb (16/24) Mar 22 2018 For reference and completeness, a simple example:
- =?UTF-8?B?Tm9yZGzDtnc=?= (2/17) Mar 22 2018 Thanks
Is there a way to check in code whether a specific flag, -dip1000 in my case, was passed to the compiler?
Mar 22 2018
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
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: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)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
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