我不知道这是不是一件好事,但我曾经在某个地方工作,每个人的计算机上都有像YOUR_NAME这样的环境变量。然后,如果您有一些自己感兴趣的调试代码,可以将其包装在#if defined( YOUR_NAME )
中,除非将其更改为#if defined( YOUR_NAME ) || defined( THEIR_NAME )
,否则甚至不会为其他人编译。
我刚尝试自己这样做,它似乎不起作用,重新启动Visual Studio,然后计算机,但它仍然似乎没有被拿起。这个hack还有比我理解的还要多,还是需要在Visual Studio中选择特定的版本/选项?
答案 0 :(得分:5)
以IanH设置为基础,使用Visual Studio,
答案 1 :(得分:2)
相当可怕的概念,但如果你真的想这样做,你可以在Visual Studio项目设置中指定一个预处理器定义,如下所示:YOUR_NAME=$(USERNAME)
因为windows机器定义了%USERNAME%
环境变量。如果您对从命令行(或在Makefile中)使用此功能感兴趣,可以将/DYOUR_NAME=%USER_NAME%
指定为cl.exe
的参数。
答案 2 :(得分:1)
您必须将编译器调用(或构建脚本/ Makefile)中的环境变量作为/ D%YOUR_NAME%开关传递。
为了避免在未定义%YOUR_NAME%时出现问题,您可以在其前面添加另一个字符串,例如
/D NAME_%YOUR_NAME%
然后你可以使用
#if defined(NAME_identitycrisisuk)
或您的用户名。
答案 3 :(得分:0)
你做不到。 C预处理器定义与环境变量完全无关。您必须让每个用户拥有自己的项目文件,并且每个用户都需要向项目文件本身添加一个额外的define指令,该指令将作为/ D开关传递给cl.exe
。
答案 4 :(得分:0)
我刚做了一个快速测试,显然VC ++ 2005并没有自动将环境变量转换为预处理器符号(它们是两个完全不同的东西)。
因此,您需要更改某些设置,以便每个用户都可以定义其符号。