今天需要书写某一软件的编译环境下的编译变量,又称环境变量,特此进行了学习,主要参考网页有:
1.http://www.docin.com/p-530257062.html VC++6.0环境变量配置 (入门)
2.http://blog.sina.com.cn/s/blog_4bb59dc40100fce3.html 杂谈系统与VC中的环境变量(自我吸收)
3.http://wenku.baidu.com/view/6d18d1283169a4517723a34e.html 配置VC++环境变量(实用)
下面略重要的说:
1.环境变量是什么?
是这样的一个东西,定义在应用程序以外的变量,通常是操作系统或者某应用程序来调用(我自己理解的)。较正规的说法:环境变量:是一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。一般是指在操 作系统中用来指定操作系统运行环境的一些参数,比如临时文件夹位置和系统文件夹位置等。在XP系统下, 选择我的电脑-》属性-》高级,点击“环境变量”按钮,即可看到分为 用户环境变量和系统环境变量。我认为 用户环境变量没有系统环境变量那么不敢使用,至少说是可以修改的。通过阅读它们可以了解一些东西。
2.VC的环境变量有哪些?
有3个 inlude、lib、path 或者 INCLUDE、LIB、PATH。 这3个环境变量指明了VC编译时到哪里去查找包含的头文件.lib库文件和可执行文件。
3.怎么给环境变量赋值?
3.1直接在第一步的“环境变量”点击后出现的对话框里,双击就可以进行编辑了。是不是随便赋值呢?肯定不是。一般来讲,都有一些经常使用,已经成为固定的了,比如安装文件和系统文件 ,对于VC来讲,
环境变量:(1)变量名: include
变量值:C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE;C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE;C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE。
(2)变量名: lib
变量值:C:\Program Files\Microsoft Visual Studio\VC98\LIB; C:\Program Files\Microsoft Visual Studio\VC98\MFC\LIB
(3) 变量名: path
变量值:C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin;C:\Program Files\Microsoft Visual Studio\VC98\BIN;C:\Program Files\Microsoft Visual Studio\Common\TOOLS;C:\Program Files\Microsoft Visual Studio\Common\TOOLS\WINNTC:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem。
3.2在VC编辑环境下,进入Tools->Options->Directories,就可以对 INCLUDE、LIB、PATH三个环境变量进行设置和赋值了!
4.理解环境变量如何进行工作。看下面一段话理解path变量是如何工作的:
你在开始->运行里面敲入“cmd”,这个就是Windows底下虚拟DOS,你敲入path,发现显示出来什么了?一堆路径,恩!对了,就是一堆路径,这堆路径就是cmd使用的路径,用它来干什么呢?当然是用来找东西了,找可执行文件。比如你写入一个notepad,你会发现记事本弹出来了。为什么它能找到记事本呢?记事本一般在系统盘的Windows\system32底下有,你应该注意到path路径里面有一个诸如:”c:\windows\system32”这样的路径,对了,环境变量就是提供给程序来使用的,“cmd”程序就是用这个path环境变量来搜索notepad这个文件的,当你写入notepad,Enter之后,他就开始按照顺序查找了,先是当前目录寻找,然后是从path变量中提取出第一个分号前面的内容,然后查找,如果找到结束,如果没有找到继续找。这个只是系统中的一个path变量,并不是说系统的变量都是path,要分清楚概念,他们是包含关系。最后,你还会发现cmd
path的路径会有系统和用户的变量。这也就是说它俩个都用了。(不稀奇,应用程序想用什么就用什么)。
注意:有很多程序,不止是VC,都使用到了path这个环境变量,比如notepad程序。由于同一个变量名path 是可以很多值的,它们以分号“;”间隔开,使用时,是逐项使用,以应用程序找到所需的结束。
背景: 今天遇到这样的一个诡异问题: 用一台机上生成的.dll 文件不能用(Debug模式下生成的), 另一台机生成就.. 最终经过多次发现,原来是机本身的问题,不是程序代码的问题..
解决的方案参考:http://stackoverflow.com/questions/5648391/c-application-fails-to-start-correctly-0xc000000d , 不过这个网址也不能正常的解决用Debug 下生成.dll 文件不能用的问题..
最终改用Release 的方法生成.dll 文件就能正常了..
#define RANDOM_MAX 0x7FFFFFFF
static long my_do_rand(unsigned long *value)
{
/*
这个算法保证所产生的值不会超过(2^31 - 1)
这里(2^31 - 1)就是 0x7FFFFFFF。而 0x7FFFFFFF
等于127773 * (7^5) + 2836,7^5 = 16807。
整个算法是通过:t = (7^5 * t) mod (2^31 - 1)
这个公式来计算随机值,并且把这次得到的值,作为
下次计算的随机种子值。
*/
long quotient, remainder, t;
quotient = *value / 127773L;
remainder = *value % 127773L;
t = 16807L * remainder - 2836L * quotient;
if (t <= 0)
t += 0x7FFFFFFFL;
return ((*value = t) % ((unsigned long)RANDOM_MAX + 1));
}
static unsigned long next = 1;
int my_rand(void)
{
return my_do_rand(&next);
}
void my_srand(unsigned int seed)
{
next = seed;
}
#include <time.h>
int main()
{
int i;
my_srand((unsigned)(time(NULL)));
for(i=0;i<100;i++)
{
if(i % 10 == 0)
printf("\n");
printf("%d\t",my_rand());
}
return 0;
}