【天然砂指标源码】【speedtree 源码】【hashtab源码】32位c源码

时间:2024-11-14 11:28:09 来源:php原生项目源码 编辑:签名工具源码在哪

1.随机数+10到-5?
2.Lccwin32 C Compiler的Lccwin32 C Compiler使用介绍
3.c语言程序代码大全(c语言程序编程代码大全)
4.64位系统上源码编译32位libcurl库

32位c源码

随机数+10到-5?

       我为C++程序做了生成随机数的位c源码源代码:位程序:位程序使用说明:运行程序,先输入随机数的位c源码数量,然后输入空格,位c源码然后输入数据范围,位c源码较小的位c源码天然砂指标源码向前数,较大的位c源码speedtree 源码向前数,然后两者之间使用空格,位c源码最后再输入回来。位c源码要从-5到的位c源码随机数,请输入“1-5 ”

Lccwin C Compiler的Lccwin C Compiler使用介绍

       å£°æ˜Ž

       æœ¬æ–‡æ²¡æœ‰ä»»ä½•æ˜Žç¡®çš„或者含蓄的表达说明本文是完全正确的,对于应用本文内容所

       äº§ç”Ÿçš„任何结果,本人概不负责。

       è¯·åŽŸè°…本文在语言和语法的的运用上的错误,本人才疏学浅,这是不可避免的。

       ç›®å½•

       * 简介

       * 编译器的安装

       * Lcc-Win的一些基本概念

       * 写个小程序!

       * 使用工程管理

       * 第一个Windows程序

       * 程序生成向导

       * 使用WeditRes创建资源

       * 添加其它类型的资源

       * 使用非规格资源

       * 静态库和动态库

       ç®€ä»‹

       å…¶å®žæ‰€è°“的简介这个部分的内容趋向取决于作者。但是我所读过的一些指南都是由一个“简介”开始的,这部分的内容通常都是在重复读者会在下面看到的东西,但是也有的简介只是作者的一些想法。仔细的想一下,其实这个介绍并不是一件简单的事情。首先,如果你要是开门见山的直奔主题,这是不礼貌的,而且基于web的指南也不应该有超大个的简介,不应该让读者在这个东西上浪费时间和金钱。看来我的废话也够多的了,让我们切入正题。这个指南是单页的,建议你等浏览器下载完毕后保存一份拷贝来离线阅读。

       ç¼–译器的安装

       ç¼–译器的安装简单极了,只要把您下载的文件运行一下就OK了,应该不会遇到什么

       é—®é¢˜ã€‚但是注意安装的最后要编译库文件,可能要花点时间,要视你的机器速度而定。

       Lcc-Win的一些基本概念

       Lcc-Win编译系统是由多个文件构成的。它们的共同的任务是把文本格式的源代

       ç ç¼–译位可以运行的二进制格式。优良个重要的文件分别是编译器(lcc.exe)和连接

       å™¨ï¼ˆlcclnk.exe)。

       ç¼–译器是用来把你编写的文本翻译成处理器可以执行的格式的程序。连接器用来转

       æ¢ç¼–译器生成的二进制文件(通常叫做目标文件),并添加操作系统用来把程序调入内

       å­˜å¹¶æ‰§è¡Œæ‰€éœ€è¦çš„信息它可以把多个目标文件链接为一个单独的程可执行程序,这样就

       å¯ä»¥ä½¿ä½ å¯ä»¥æŠŠä¸€ä¸ªç¨‹åºçš„代码文档分割为几个模块,这个能力在你开发大型程序时是

       å¾ˆé‡è¦çš„。

       è™½ç„¶è¿™äº›å¬èµ·æ¥å¥½åƒååˆ†çš„简单,但是实际上并不是这个样子的。编辑器和链接器

       éœ€è¦ä½ åœ¨å‘½ä»¤è¡Œæ–¹å¼ä¸‹é”®å…¥ä½ è¦å»ºç«‹çš„程序的所有信息,这将需要你记住大量的命令行

       å‚数和各种各样的开关,这时就需要IDE——集成开发环境(wedit.exe)来提供方便了。

       IDE的基本功能是编辑文本,你可以在这个环境里编辑程序的源代码,但是远远不

       æ­¢æœ‰è¿™ä¸ªåŠŸèƒ½ã€‚它还给你提供了一个调用编译器和链接器的简单方法,这样在编译程序

       çš„时候你就不用去记住那么多的命令行参数了。

       ä½ å¯ä»¥ç®€å•çš„把Wedit想象成你的控制台,在这里你可以控制所有的流程。

       å¥½å§ï¼çŽ°åœ¨ä½ å¯ä»¥ç”¨ä½ çš„鼠标点一下Windows的“开始”按钮,在程序项的子菜单了

       å¯»æ‰¾â€œlcc-win”,好了吗?现在你已经准备好在Lcc-Win中写你的第一个程序了。

       å†™ä¸ªå°ç¨‹åºï¼

       ä½ çŸ¥é“吗?自从第一个C编译器产生以来(也许可能更早一些),有一个惯例就是

       ä¸ºè¿™ä¸ªç¼–译器写的第一个程序是“Hello World”,我为我拥有的所有编译器都写过,

       çŽ°åœ¨æˆ‘们就来写一个。

       ç¬¬ä¸€æ­¥æ˜¯åˆ›å»ºæºç æ–‡ä»¶ã€‚在“File”菜单中选择“new”项,然后在出现的对话框

       ä¸­è¾“入“hello.c”并点一下“OK”。

       çŽ°åœ¨ä½ çœ‹åˆ°çš„是一个标题为“hello.c”的空白窗口,输入下面的代码:

       #include <stdio.h>

       void main (void)

       {

       printf (Hello World from LCC-Win!\n);

       }

       ä¿å­˜æˆ‘们的小程序,在“File”菜单中选择“Save”项。

       çŽ°åœ¨æˆ‘们可以编译这个程序了。选择“Compiler”菜单中的“Compile hello.c”

       è°ƒç”¨ç¼–译器。这时一个新窗口会出现在IDE的底部,这是信息窗口,当编译器处理完成,

       åœ¨è¿™ä¸ªçª—口中将会显示“HELLO.exe build successfully.”,如果编译出错,出错信

       æ¯ä¹Ÿå°†ä¼šè¢«æ˜¾ç¤ºåœ¨è¿™é‡Œã€‚

       å¦‚果编译出错了,在信息窗口处双击信息显示所在行,在编辑窗口内将高亮度显示

       å‡ºé”™ä»£ç è¡Œï¼Œä»”细的检查一下你写的程序和上面我写的一样,这里需要注意的是C语言

       æ˜¯å¤§å°å†™æ•æ„Ÿçš„程序语言,这意味着“printf”和“Printf”对编译器是不相同。

       çŽ°åœ¨ä½ å·²ç»ç¼–译好了这个程序,按[Ctrl]+[F5]键运行一下,结果对吗?

       ä½¿ç”¨å·¥ç¨‹ç®¡ç†

       çŽ°åœ¨ä½ å·²ç»ç¼–译了你的第一个程序,你可能想知道——执行文件在哪里?

       å›žç­”是:我也不知道!这可能听起来很傻(的确也是),但是这是看你在编译程序

       æ—¶çš„缺省目录是什么,所以你应该在你的硬盘里搜索一个叫做“hello.exe”的文件。

       ä½ è‚¯å®šä¸ä¼šæƒ³è¦æ¯å¼€å‘一个程序都要搜索一下硬盘的,这种情况下你就要使用工程。

       å·¥ç¨‹æ˜¯ä¸€äº›ç¼–译器要知晓的建立程序所需要的信息。这包括程序源文件、编译好的

       æ–‡ä»¶çš„存放地点、要编译为什么类型的可执行文件,一个好的想法是为每一个程序建立

       ä¸€ä¸ªå·¥ç¨‹ã€‚

       äº‹å®žä¸Šï¼Œå¯¹äºŽæˆ‘们的“HelloWorld”程序还是有一个工程的,Lcc=Win会为没有

       æŒ‡æ˜Žå·¥ç¨‹çš„程序建立一个缺省的工程。选择“Project”菜单的“Erase...”项,Wedit

       ä¼šæ˜¾ç¤ºä¸€ä¸ªå·¥ç¨‹åˆ—表,你会看到一个项目叫做“HELLO”,现在我们毫不留情的删除它。

       ä¸Žå…¶ä»–的编译器不同的是,Lcc-Win的工程信息不是存储在硬盘上的,而是存储

       åœ¨Windows的注册表项里。这使得Wedit可以“记住”所有的工程,甚至于在不同的磁盘

       ä¸Šã€‚但是优势我们也需要清除我们不再使用的工程,在这种情况下,我们可以把工程信

       æ¯å¯¼å‡ºåˆ°ç£ç›˜ä¸Šï¼Œç„¶åŽåœ¨IDE中删除它。看一下“Project”菜单的选项,你就会明白了。

       çŽ°åœ¨ä½ å¯ä»¥è¯•ç€åˆ›å»ºä¸€ä¸ªâ€œHELLO”工程。

       ç¬¬ä¸€ä¸ªWindows程序

       ä½ å¯èƒ½å·²ç»æ³¨æ„åˆ°äº†hello.exe看起来象是一个DOS程序,但是它不是的,它是一个

       çœŸæ­£Windows程序,但是这种类型的程序被称为Windows控制台程序,位c源码就是在文本模式下

       è¿è¡Œçš„Windows程序。如果你不相信,可以试着在Windows的纯DOS环境下运行一下,你

       ä¼šå¾—到一行信息:“This program cannot be run in DOS mode”。

       å†™ä¸€ä¸ªçœŸæ­£çš„Windows版的“HelloWorld”程序并不比控制台的版本难多少。首先

       åˆ›å»ºä¸€ä¸ªæ–°å·¥ç¨‹ï¼Œé€‰æ‹©â€œWindows executable”代替“Console application”,点OK

       åŽï¼ŒLcc-Win会问你需要Wizard(生成向导)创建程序框架吗,回答No。

       #include <windows.h>

       int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

       {

       MessageBox (NULL, Hello world from Lcc-Win!, Hello, MB_OK);

       return 0;

       }

       ç¼–译并运行这个程序,你会看到一个显示hello信息的窗口,点ok关闭退出。

       ä¸å¹¸çš„是,除了这样的小之又小的Windows程序,一般情况下Windows程序是很复杂

       çš„,现在你已经知道了如何创建工程和编译程序,如果你是一个Windows编程新手,去

       æ‰¾ä¸€äº›æœ‰å…³çš„书来看看,取得必要的基础,一些Windows编程知识在下面的部分是必须

       çš„。

       å¦‚果你是一个C语言的新手,那么先好好的学一段时间再来看这个指南吧!

       ç¨‹åºç”Ÿæˆå‘导

       Windows程序与文本状态下的程序比起来要好的多,但是天上不会掉馅饼的,你想

       è¦å¾—到的Windows功能支持,比如:剪裁板、多任务等等要付出的是大量的复杂的代码。

       ä½†æ˜¯æ€»è¿˜æ˜¯æœ‰äº›åŠžæ³•å¯ä»¥ä½¿äº‹æƒ…变得简单一些的。长时间以来,程序员们发现实际

       ä¸Šæ€»æ˜¯æœ‰äº›åœ¨æ¯ä¸ªç¨‹åºä¸­éƒ½ç›¸åŒçš„代码段,所以Windows程序员通常使用模板来生成这

       éƒ¨åˆ†ä»£ç ã€‚就是说源文件一般只要生成一次,就可以在任何一个新程序中使用了。只有

       å˜åŒ–的部分才是每个程序不同的部分,显然这些应该是可以自动的进行的。

       è¿™å°±æ˜¯ç”Ÿæˆå‘导要完成的工作。你可以在它的帮助下快速的生成应用程序的框架。

       è¿™ä¸ªæ¡†æž¶äº‹å®žä¸Šå°±æ˜¯ä¸€ä¸ªä»€ä¹ˆåŠŸèƒ½ä¹Ÿæ²¡æœ‰çš„一个完整的程序,也许可能只是用来显示一

       ä¸ªç©ºçª—体,因为使程序完成具体的功能是你的工作。

       è®©æˆ‘们看一下使用向导建立最简单的应用程序的处理。

       é€šå¸¸ï¼Œç¬¬ä¸€æ­¥æ˜¯åˆ›å»ºç¨‹åºä»£ç ï¼Œç„¶åŽå»ºç«‹ä¸€ä¸ªå·¥ç¨‹ã€‚在使用向导的模式下,你并不

       éœ€è¦å†™ä¸€è¡Œä»£ç ï¼Œå‘导将为你建立它,我们直接来看建立工程各个步骤。

       åœ¨â€œProject”菜单下选择“create”项,给出项目名称和路径,选择工程类型为

       â€œWindows executable”,当Wedit询问你是否要使用向导(wizard),回答“yes”,

       è¿™æ ·å°±è¿›å…¥äº†å‘导模式。

       å‘导将显示一个对话框叫做:“Application characteristics”,这是向导将在

       åº”用程序中包含的基本特点,你可以选择以下情况的一种:单窗口、多窗口和DLL(动

       æ€é“¾æŽ¥åº“),现在我们要创建一个十分简单的单窗口小应用程序,选择单窗口类型并确

       ä¿æ‰€æœ‰çš„特性复选按纽都未被选中,点击“OK”进行处理。

       çŽ°åœ¨å‘导将要提示你输入信息设置主窗口的“类”,这里所说的“类”和C++中的

       ç±»æ˜¯ä¸åŒçš„,它是Windows在内存中存储的一个结构,用来存储正确显示窗口所需要的

       ä¿¡æ¯ã€‚最重要的是“回叫函数”(下面将具体介绍)的名称,现在只要简单接受默认的

       å±žæ€§å€¼ï¼Œç‚¹å‡»â€œNEXT”进行处理。

       è¿™ä¸ªâ€œGenerate code for the main window creation”对话框用来设定相应窗口

       çš„信息。当主窗体被创建的时候这些信息会被传送到相应的窗口。在这里你可以改变窗

       å£çš„标题栏的显示内容,然后点击“Finish”。

       å‘导的工作就要完成了,接下来的工程创建工作是通常的一些对编译器、链接器、

       è°ƒè¯•å™¨çš„一些设置,这里只要简单的接受缺省的选项就可以了。

       ç»è¿‡ä¸Šé¢çš„步骤,就完成了向导的所有的工作,你可以在IDE中看到两个窗口,一

       ä¸ªæ˜¯æºç¨‹åºç¼–辑窗,另外的一个是用来定义应用程序的主菜单的脚本。

       æ­£è±¡åˆšåˆšæ‰€è¯´çš„那样,这个程序框架是全功能的,可以通过编译并运行,你可以看

       åˆ°ä¸€ä¸ªæœ‰èœå•çš„窗口。唯一可以进行的操作是“File”菜单的“Exit”项,你可以使用

       è¿™ä¸ªèœå•é¡¹å…³é—­è¿™ä¸ªç®€å•çš„窗口,也可以使用[Ctrl]+[Q]完成同样的操作。

       çŽ°åœ¨ä½ å¯ä»¥çœ‹ä¸€ä¸‹è¿™ä¸ªç¨‹åºçš„源代码,你会注意到这个程序比那个“Hello World!”

       ç¨‹åºå¤æ‚了许多,我可以告诉你一个小窍门——从源代码的结尾开始读起,因为通常那

       é‡Œæ‰æ˜¯ä¸€äº›åŠŸèƒ½å‡½æ•°çš„所在。

       ä½¿ç”¨WeditRes创建资源

       åœ¨Windows程序的开发中,资源是十分重要的部分,菜单、对话框和其它的一些用

       æˆ·æŽ¥å£éƒ¨åˆ†éƒ½æ˜¯å¯ä»¥è±¡å†™ç¨‹åºä¸€æ ·çš„编写的,可以简单的作为资源包含进程序中。

       å¦‚æžœLcc-Win没有提供一个资源编辑器那么Lcc-Win将不是一个完整的Win编

       è¯‘程序,Lcc-Win提供的资源编辑器叫做WeditRes,是在“lcc\bin\”路径下。

       çš„确,WeditRes还是在不断的完善的过程中,也就是说还没有开发完成。不过它已

       ç»å¯ä»¥ç¼–辑一些手工编辑难以完成的资源了,比如:菜单和对话框等等。在IDE下调用

       WeditRes,在“Compiler”菜单下选择“Resources”项。

       å¦‚果你正在开发的程序是用向导生成的,那么向导会产生一个资源文件,在这个文

       ä»¶é‡Œè‡³å°‘包括菜单资源,WeditRes会打开这个资源文件,但是它不会找到相应的头文件,

       ä½ åº”该为它指明头文件的路径。通常是在WeditRes当前工作路径的上一级目录。

       WeditRes要找的文件通常叫做prjnamewiz.h,这里的prjname是你指定

       çš„工程的名称。经过这一步就可以修改工程所用的资源了。

       å¦‚果你的程序不是由向导生成的,那么WeditRes会提示你输入资源文件的文件名,输

       å…¥ä¸€ä¸ªåç§°åŽç‚¹å‡»â€œOK”,这时WeditRes会说不能打开这个资源文件,没有关系,这是

       å› ä¸ºè¿™ä¸ªç›®å½•ä¸‹çš„确是没有资源文件的,还是在这个对话框中点击“OK”,然后在

       â€œFile”菜单中选择“New”项,这样就会为你的工程创建一个新的资源工程,键入一

       ä¸ªå·¥ç¨‹åï¼Œä¸€èˆ¬æƒ…况是和应用程序的工程名相同,然后点击“Validate”,现在你需要

       æ‰‹å·¥åœ¨åº”用程序工程列表里添加这个资源文件(一般以“RES”为扩展名)。

       åœ¨è¿™é‡Œè¯•ä¸¾ä¸€ä¾‹â€”—我们来为我们上面创建的程序创建一个“关于”对话框资源。

       è¿è¡ŒWeditRes,输入头文件的路径后选择“Objects”菜单的“New dialog”项,

       è¿™æ—¶WeditRes会显示一个对话框,标题栏为“Dialog box parameters”,改变对话框

       çš„标题为“About this application”或者随便其它的什么东西,然后在“Identity”

       ï¼ˆæ ‡è¯†ç¬¦ï¼‰é¡¹é”®å…¥ä¸€ä¸ªä½ å–œæ¬¢çš„东西,比如:“DLG_ABOUT”,在“standard buttons”

       é€‰å•ä¸­é€‰æ‹©â€œValidate”选项并点击“OK”关闭对话框。

       ä½ åœ¨è¿™ä¸ªæ—¶å€™åº”该可以看到一个新的对话框和一个浮动的工具条,在对话框中也应

       è¯¥æœ‰ä¸€ä¸ªæŒ‰çº½ï¼Œä½ å¯ä»¥ç”¨é¼ æ ‡æ‹–动它来重新指定它的位置,如果你还想改变按纽上显示

       çš„文字——双击它打开属性对话框,或者先选定它,然后在浮动工具条下改变显示文字。

       ä¸‹é¢æˆ‘们添加一个静态文本标签,在工具条上选择文本工具,光标形状变成由一个

       çŸ©å½¢åŒ…围的指针,在对话框的窗体上点击一下,一个包含文本——“Text”——的矩形

       ä¼šå‡ºçŽ°åœ¨ä½ ç‚¹å‡»çš„地方,可以通过鼠标拖动来改变这个文本框的大小,同样也可以改变

       æ˜¾ç¤ºçš„文本和文本框的位置。

       æˆ‘们还可以在这个对话框中添加其它的装置。空心方框、实心方框和组件盒等可以

       å¯¹è¿™ä¸ªå¯¹è¯æ¡†è¿›è¡Œä¸€äº›ç®€å•çš„装饰。如果你想要删除一个装置,选定它然后按

       [Ctrl] + [X],或者选择“Edit”菜单的“Cut”项。还可以选择“Options”菜单的

       â€œTest”项测试这个对话框的外观。在工具栏里有一个按纽的功能是相同的,就是看起

       æ¥è±¡ä¸€ä¸ªå¼€å…³çš„那个,如果想要继续编辑这个对话框,只要再次选择上述选项一次即可。

       ç¼–辑完成后在“File”菜单中选择存盘,然后关闭WeditRes,为了显示这个对话框

       ä¸‹é¢æˆ‘们必须在程序中包含相应的代码。

       å¯»æ‰¾â€œOnCommand”语句,在那里肯定有一个switch语句的条件之一是菜单命令

       â€œExit”的(IDM_EXIT),现在我们为我们的新对话框添加一个新的case条件,输入如

       ä¸‹ä»£ç ï¼š

       case IDM_ABOUT:

       DialogBox (hInst, MAKEINTRESOURCE(DGL_ABOUT), hwnd, AboutDlgProc);

       break;

       æˆ‘们还需要编写对话框函数。

       BOOL CALLBACK AboutDlgProc (HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)

       {

       switch (msg)

       {

       case WM_COMMAND:

       if (LOWORD(wParam) == IDOK)

       {

       EndDialog(hwnd,0);

       return TRUE;

       }

       break;

       }

       return FALSE;

       }

       ä½ åº”该已经明白了,由向导来生成代码要简单得多!现在编译、链接这个程序,然

       åŽè¿è¡Œå®ƒï¼Œé€‰æ‹©â€œCompiler”中的“Execute prj.exe”项,我们创建的对话框将显示

       åœ¨å±å¹•ä¸Šäº†ã€‚

       æ·»åŠ å…¶å®ƒç±»åž‹çš„资源

       ä½ è¿˜éœ€è¦çŸ¥é“如何添加其它资源,如图标等。

       äº‹å®žä¸ŠWeditRes还不能编辑图标文件,作者说正在做这方面的工作。所以你可能要

       ä½¿ç”¨å…¶å®ƒçš„工具来完成图标编辑的工作。

       åœ¨èµ„源创建完后,你要把它添加到工程的资源描述文件里面去。如果你是使用向导

       åˆ›å»ºçš„工程。你只须要打开与工程名相同的*.RC文件就可以了。

       å¦‚果你没有使用向导,那么你只能新创建一个RC文件。如果你是使用WeditRes创建

       çš„资源,在建立资源描述文件时有些事情是你必须知道的——必须包含WeditRes资源,

       ç”šè‡³äºŽä½ å¹¶æ²¡æœ‰ä½¿ç”¨ä»»ä½•ç”±WeditRes创建的资源,你完全有可能在后续的工作中用到,

       æˆ‘建议无论什么情况都应该象下面这样做。

       WeditRes一般要建立三个文件:一个*.DLG文件、一个*.H头文件和一个*.RES二进

       åˆ¶èµ„源文件。DLG文件描述了由WeditRes创建的资源的定义(如:资源串、菜单和对话

       æ¡†ç­‰ï¼‰ï¼ŒH文件是所有资源的符号名的定义,RES文件是编译后的二进制资源文件,这个

       æ–‡ä»¶å°†è¢«é“¾æŽ¥åˆ°å·¥ç¨‹æœ€åŽç”Ÿæˆçš„可执行程序中。

       èµ„源描述文件(*.RC)的文件名一定要和RES文件的文件名相同,当Lcc-Win的资

       æºç¼–译器(lrc.exe)编译资源时将覆盖原来的RES文件。你可以在Wedit中创建资源描

       è¿°æ–‡ä»¶ï¼Œå¦‚下:

       #include <windows.h>

       #include resources.h

       #include resources.dlg

       æ¯ã€‚

       ç¬¬äºŒè¡ŒåŒ…含由WeditRes产生的资源的符号名的头文件,我在这里假定你的资源工程

       åä¸ºâ€œresurces”,可以改为你所定义的名称。第三行是WeditRes产生的资源描述文件,

       è¿™æ ·ä¸ä¼šä¸¢å¤±ä½ å·²ç»åˆ›å»ºäº†çš„资源。

       ä¸‹é¢ä½ å¯ä»¥å‘资源描述文件中增加资源,下面是一个例子:

       IDI_MYICON ICON myiconfile.ico

       è¿™ä¸€è¡Œå®šä¹‰äº†å›¾æ ‡èµ„源,在使用前,一定要定义图标的符号名。比如在“prjwiz.h”

       æ–‡ä»¶ï¼ˆæˆ–者“resource.h”,如果你没有使用向导)中,如果你没有定义这个符号名,

       é‚£ä¹ˆç¼–译器将认为它是一个字符串名。

       æ·»åŠ å…‰æ ‡æˆ–者位图资源的步骤是相同的,只要把关键字改为“BITMAP”或者

       â€œCURSOR”。

       ä¸‹é¢è¦åšçš„是把资源描述文件包含在工程文件列表中,当下一次你编译工程,资源

       ç¼–译器也将编译这个资源描述文件,并把产生的二进制资源链接到执行文件内。

       è¿™æ ·ä½ å¯ä»¥æ·»åŠ å›¾æ ‡ã€å…‰æ ‡å’Œä½å›¾èµ„源,对于其它类型的资源可以使用RCDATA资源

       æ–¹å¼æ·»åŠ åˆ°èµ„源文件内,就是一系列的由逗号分隔的数值信息,这种方式可以使Lcc-Win

       çš„资源编译器不支持的资源得以添加到资源文件中去,比如WAV文件等。

       ä½¿ç”¨éžè§„格资源

       Lcc-win的资源编译器可以使用各种类型的资源,如对话框、菜单、图标等,但

       æ˜¯å®ƒä¸èƒ½ä½¿ç”¨å…¶å®ƒéžè§„格的资源如多媒体文件(WAV,MID等等)。

       ä½ å¯èƒ½è®¤ä¸ºä½¿ç”¨å…¶å®ƒçš„资源编译器如微软在Win SDK中提供的资源编译器,或者

       å…¶å®ƒçš„什么东西。

       ä½†æ˜¯è¿™é‡Œçš„麻烦事是LCCLINK,因为它并不认识这些资源,因此也不可能把这些资

       æºé“¾æŽ¥åˆ°ä½ çš„执行文件中去,这和真是个大问题,你可能不得不使用其它的链接器,这

       æ„å‘³ç€å¯èƒ½éœ€è¦å…¶å®ƒç±»æ€§çš„入口库。

       æˆ‘认为这样做不是一个好的解决方案,主要的原因是Wedit不是设计成可以使用其

       å®ƒçš„链接器的,你将不得不在命令行下编译你的程序,放弃了Lcc-Win IDE提供的全

       éƒ¨ä¼˜ç‚¹ã€‚

       ä½†æ˜¯è¿™é‡Œè¿˜æ˜¯æœ‰ä¸€ä¸ªå¯ä¾›é€‰æ‹©çš„方案,——幸运的是LRC支持RCDATA资源类型,这

       ç§èµ„源类型用来包含二进制数据类型的资源,使用一系列的数字列表表示。

       ä¸‹é¢æ˜¯å…·ä½“的实现方法:

       é¦–先你需要转换你要使用的二进制文件到有一系列的有逗号分割数值表示的文本文

       ä»¶ï¼ŒLRC缺省的认为这些数据是位长的,它同时也支持位长度的整数,只要在数值

       åŽæ·»åŠ â€œL”字符就可以了。

       ä½ å¯ä»¥ä»Žè¿™é‡Œä¸‹æ ½åšè¿™äº›å·¥ä½œçš„转换器:

       * Bin2Txt: 开发者:Josef Planeta. 十分的灵活方便;

       * TextIt: 本文作者开发,可以一次转换多个文件。

       è¿™ä¸¤ä¸ªå·¥å…·éƒ½å¸¦æœ‰æºç ï¼Œä½¿ç”¨Lcc-Win开发。

       ç„¶åŽä¸€å®šè¦åœ¨èµ„源数据中包含这些整数列表,如果你的资源文件没有使用资源描述

       æ–‡ä»¶ï¼Œå¦‚果你没有使用向导生成工程,这是有很大可能的。你一定要建立一个资源描述

       æ–‡ä»¶ï¼Œä¸€èˆ¬æ˜¯è¿™ä¸ªæ ·å­çš„:

       #include <windows.h> //basic Windows header file

       #include resources.h //resource identifiers (generated by WeditRes)

       #include resources.dlg //resource scripts (generated by WeditRes)

       MySound RCDATA

       BEGIN

       #include mysound.txt

       END

       åœ¨è¿™ä¸ªä¾‹å­ä¸­ï¼Œæˆ‘们包含了一个叫做“mysound.txt”的文件,这个文件是由一个

       WAV文件转换成的数据文件。

       è¦æ³¨æ„å½“前版本的LRC(V)在RCDATA资源的大小上是有限制的,如果任何一

       ä¸ªæ•°æ®æ–‡ä»¶å¤§äºŽKb,你有可能得到一个溢出信息(Overflow in resource data),

       åœ¨æœªæ¥çš„版本中可能会有所改进,但是在目前如果出现了这种情况可能只有使用其它的

       èµ„源编译器了。

       ä½¿ç”¨RCDATA类型定义资源意味着你不能直接的指定PlaySound来播放这些资源,因

       ä¸ºç±»åž‹æ˜¯ä¸åŒçš„。

       è§£å†³åŠžæ³•æ˜¯æ‰‹å·¥æŠŠè¿™äº›æ•°æ®è¯»å…¥å†…存,下面的代码说明了在PlaySound时要做的事情:

       BOOL PlayRcSound (HINSTANCE hInst, LPCTSTR lpszSndName)

       {

       HRSRC hr;

       HGLOBAL hg;

       LPVOID lpSndData;

       hr = FindResource (hInst, lpszSndName, RT_RCDATA);

       if (hr != NULL)

       {

       hg = LoadResource (hInst, hr);

       if (hg != NULL)

       {

       lpSndData = LockResource (hg);

       if (lpSndData != NULL)

       {

       return PlaySound((LPCTSTR)lpSndData, NULL, SND_MEMORY);

       /* We do not need to unlock or unload the resource, */

       /* Windows will take care of this */

       }

       }

       }

       return FALSE;

       }

       å¦‚果你的资源在头文件中定义有标识符,叫做:ID_MYSOUND,那么调用函数的方式

       åº”该是:

       PlayRcSound (hInst, MAKEINTRESOURCE(ID_MYSOUND));

       å¦å¤–,如果你给出了一个字符串名,比如:MySound,函数调用如下所示:

       PlayRcSound (hInst, MySound);

       é™æ€åº“和动态库

       ä¹Ÿè®¸ç¨‹åºå‘˜å°±æ˜¯å–œæ¬¢æ¯”喻以类的修辞的,库的概念就是一个例子,它是用来存储可

       èƒ½åœ¨è®¸å¤šçš„程序中使用的代码,或者一部分十分专业的代码,只要写一次就可以了,甚

       è‡³æ˜¯ç”±å…¶ä»–的人为你写的代码,这样使用这些代码而完全不用关心具体的实现细节。

       å’Œå…¶å®ƒçš„Windows编译器一样,LCC-Win也支持两种库——动态库和静态库。

       é™æ€åº“包含的代码在编译链接时将被添加在可执行文件中,它被称为“静态”库是

       å› ä¸ºä¸€æ—¦å®ƒé“¾æŽ¥åˆ°å¯æ‰§è¡Œæ–‡ä»¶ä¸­ï¼Œå°±å°†ä¸å¯æ”¹å˜ï¼ˆé™¤éžé‡æ–°ç¼–译整个程序)。

       è€ŒåŠ¨æ€é“¾æŽ¥åº“不会由编译器链接到可执行文件中,而是在运行时由操作系统链接的,

       è¿™æ ·å³ä½¿ä½ æ”¹å˜äº†è¿™ä¸ªåº“,也不会使整个可执行程序重新编译。

       é™æ€åº“的编写要简单些,只要创建一个类型为“Static library (lib)”的新工程,

       æ·»åŠ ä½ è¦åœ¨è¿™ä¸ªé™æ€åº“中使用的原始资料——函数、数据等等,编译后就会得到一个

       LIB文件,这个文件里面包括了所有你指定的函数和数据。如果你要使用这些函数或者

       æ•°æ®ï¼Œåœ¨â€œConfiguration”对话框中的“Linker”表里的“Additional libraries”

       é¡¹ä¸­æŒ‡å®šé™æ€åº“名称,通知编译器把这个静态库链接到工程里去,但是千万不要忘了把

       ä½ çš„静态库放到链接器能够找到的地方,比如:“\lcc\lib”路径下。

       åŠ¨æ€é“¾æŽ¥åº“就有些麻烦了,你要使用两个文件而不是一个文件:动态库本身——DLL

       æ–‡ä»¶å’Œå…³è”入口库——LIB文件。入口库是给链接器使用的,简单的说它使用来哄骗

       é“¾æŽ¥å™¨çš„,同时它也包含了使Windows正确的调用相应动态库中的函数的信息。

       è€Œä¸”,动态库的功能可以更加的强大,它有一个LibMain()函数,在程序每一次

       è°ƒç”¨å®ƒæ—¶éƒ½è¦é€šè¿‡å®ƒæ¥è¿›è¡Œåˆå§‹åŒ–的工作。

       è¦åˆ›å»ºä¸€ä¸ªåŠ¨æ€é“¾æŽ¥åº“,你要创建一个DLL工程,然后你可以使用向导生成LibMain()

       å‡½æ•°ã€‚添加你要使用的函数和数据,在编译这个工程后,你就可以得到DLL库和接口库

       æ–‡ä»¶ã€‚

       å¦‚果要使用动态链接库,象使用静态库一样,要将接口库放在“\lcc\lib”路径下,

       åœ¨â€œOptions”对话框中添加这个接口库。同时也要把DLL文件放置在Windows能够搜索

       åˆ°çš„路径下,Windows搜索动态链接库的缺省目录是“\windows\system\”和应用程序

       çš„起始目录,将动态链接库放置在这两个目录下都是可以的

c语言程序代码大全(c语言程序编程代码大全)

       c语言程序代码

       C语言源代码,就是依据C语言规则所写出的程序代码,常见的存储文件扩展名为.c文件和.h文件,分别对应C源文件(sourcefile)和C头文件(headerfile)。

       C语言是一门编程语言,简单点说,就是由人类书写按照一定规范书写的字符,通过一定手段(编译链接)转换后,可以让电脑或者其它电子芯片"读懂",并按照其要求工作的语言。在所有的编程语言中,C语言是相对古老而原始的,同时也是在同类语言中更接近硬件,最为高效的编程语言。

       ç›¸å…³å†…容:

       C语言是一门面向过程的计算机编程语言,与C++、C#、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

       C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低%-%。因此,C语言可以编写系统软件。

       å½“前阶段,在编程领域中,C语言的运用非常之多,它兼顾了高级语言和汇编语言的优点,相较于其它编程语言具有较大优势。计算机系统设计以及应用程序编写是C语言应用的两大领域。同时,C语言的普适较强,在许多计算机操作系统中都能够得到适用,且效率显著。

       C语言拥有经过了漫长发展历史的完整的理论体系,在编程语言中具有举足轻重的地位。

       c语言跪求最简单的求和程序代码

       ä¸‹é¢æ˜¯C语言中的一个最简单的求和程序:

Copycode

       #includestdio.h

       intmain()

       {

       intnum1=1,num2=2,sum;

       sum=num1+num2;

       printf("两数之和为:%d",sum);

       return0;

       }

       åœ¨è¿™ä¸ªç¨‹åºä¸­ï¼Œæˆ‘们定义了两个整型变量num1和num2,并将它们相加得到sum。最后输出了sum的值。

       è¿™ä¸ªç¨‹åºæ˜¯æœ€ç®€å•çš„求和程序之一,只涉及到两个数字的相加操作,非常易于理解和操作。但是,需要注意的是,在实际编写复杂的程序时,还需要学习更多的C语言知识和技巧。

c语言必背代码有哪些?

       1、/*输出9*9口诀。共9行9列,i控制行,j控制列。*/

       #include"stdio.h"

       main()

       { inti,j,result;

       for(i=1;i;i++)

       { for(j=1;j;j++)

       {

       result=i*j;

       printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/

       }

       printf("\n");/*每一行后换行*/

       }

       }

       2、/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

       å…”子的规律为数列1,1,2,3,5,8,,....*/

       main()

       {

       longf1,f2;

       inti;

       f1=f2=1;

       for(i=1;i=;i++)

       { printf("%ld%ld",f1,f2);

       if(i%2==0)printf("\n");/*控制输出,每行四个*/

       f1=f1+f2;/*前两个月加起来赋值给第三个月*/

       f2=f1+f2;/*前两个月加起来赋值给第三个月*/

       }

       }

       3、/*判断-之间有多少个素数,并输出所有素数及素数的个数。

       ç¨‹åºåˆ†æžï¼šåˆ¤æ–­ç´ æ•°çš„方法:用一个数分别去除2到sqrt(这个数),如果能被整除,

       åˆ™è¡¨æ˜Žæ­¤æ•°ä¸æ˜¯ç´ æ•°ï¼Œåä¹‹æ˜¯ç´ æ•°ã€‚*/

       #include"math.h"

       main()

       {

       intm,i,k,h=0,leap=1;

       printf("\n");

       for(m=;m=;m++)

       { k=sqrt(m+1);

       for(i=2;i=k;i++)

       if(m%i==0)

       { leap=0;break;}

       if(leap)?/*内循环结束后,leap依然为1,则m是素数*/

       { printf("%-4d",m);h++;

       if(h%==0)

       printf("\n");

       }

       leap=1;

       }

       printf("\nThetotalis%d",h);

       }

       4、/*一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程

       æ‰¾å‡ºä»¥å†…的所有完数。*/

       main()

       {

       staticintk[];

       inti,j,n,s;

       for(j=2;j;j++)

       {

       n=-1;

       s=j;

       for(i=1;ij;i++)

       { if((j%i)==0)

       { ?n++;

       s=s-i;

       k[n]=i;

       }

       }

       if(s==0)

       { printf("%disawanshu:?",j);

       for(i=0;in;i++)

       printf("%d,",k[i]);

       printf("%d\n",k[n]);

       }

       }

       }

       5、/*下面程序的功能是将一个4×4的数组进行逆时针旋转度后输出,要求原始数组的数据随机输入,新数组以4行4列的方式输出,

       è¯·åœ¨ç©ºç™½å¤„完善程序。*/

       main()

       { ?int?a[4][4],b[4][4],i,j;/*a存放原始数组数据,b存放旋转后数组数据*/

       printf("inputnumbers:");

       /*输入一组数据存放到数组a中,然后旋转存放到b数组中*/

       for(i=0;i4;i++)

       for(j=0;j4;j++)

       { ?scanf("%d",a[i][j]);

       b[3-j][i]=a[i][j];

       }

       printf("arrayb:\n");

       for(i=0;i4;i++)

       { ?for(j=0;j4;j++)

       printf("%6d",b[i][j]);

       printf("\n");

       }

       }

       6、/*编程打印直角杨辉三角形*/

       main()

       { inti,j,a[6][6];

       for(i=0;i=5;i++)

       { a[i][i]=1;a[i][0]=1;}

       for(i=2;i=5;i++)

       for(j=1;j=i-1;j++)

       a[i][j]=a[i-1][j]+a[i-1][j-1];

       for(i=0;i=5;i++)

       { for(j=0;j=i;j++)

       printf("%4d",a[i][j]);

       printf("\n");}

       }

       7、/*通过键盘输入3名学生4门课程的成绩,

       åˆ†åˆ«æ±‚每个学生的平均成绩和每门课程的平均成绩。

       è¦æ±‚所有成绩均放入一个4行5列的数组中,输入时同一人数据间用空格,不同人用回车

       å…¶ä¸­æœ€åŽä¸€åˆ—和最后一行分别放每个学生的平均成绩、每门课程的平均成绩及班级总平均分。*/

       #includestdio.h

       #includestdlib.h

       main()

       { floata[4][5],sum1,sum2;

       inti,j;

       for(i=0;i3;i++)

       for(j=0;j4;j++)

       scanf("%f",a[i][j]);

       for(i=0;i3;i++)

       { sum1=0;

       for(j=0;j4;j++)

       sum1+=a[i][j];

       a[i][4]=sum1/4;

       }

求行简单C语言程序代码,基础的就好

       #includestdio.h

       #includestdlib.h

       #defineNUM

       /*runthisprogramusingtheconsolepauseroraddyourowngetch,system("pause")orinputloop*/

       //冒泡排序算法

       //基本思想:比较相邻的两个数,如果前者比后者大,则进行交换。每一轮排序结束,选出一个未排序中最大的数放到数组后面。

       voidbubbleSort(int*arr,intn){

       inti,j;

       for(i=0;in-1;i++)

       for(j=0;jn-i-1;j++){

       //如果前面的数比后面大,进行交换

       if(arr[j]arr[j+1]){

       inttemp=arr[j];

       arr[j]=arr[j+1];

       arr[j+1]=temp;

       }

       }

       }

       //最差时间复杂度为O(n^2),平均时间复杂度为O(n^2)。稳定性:稳定。辅助空间O(1)。

       //升级版冒泡排序法:通过从低到高选出最大的数放到后面,再从高到低选出最小的数放到前面,

       //如此反复,直到左边界和右边界重合。当数组中有已排序好的数时,这种排序比传统冒泡排序性能稍好。

       //升级版冒泡排序算法

       voidbubbleSort_1(int*arr,intn){

       //设置数组左右边界

       intleft=0,right=n-1;

       //当左右边界未重合时,进行排序

       while(left=right){

       inti,j;

       //从左到右遍历选出最大的数放到数组右边

       for(i=left;iright;i++){

       if(arr[i]arr[i+1]){

       inttemp=arr[i];

       arr[i]=arr[i+1];

       arr[i+1]=temp;

       }

       }

       right--;

       //从右到左遍历选出最小的数放到数组左边

       for(j=right;jleft;j--){

       if(arr[j+1]arr[j]){

       inttemp=arr[j];

       arr[j]=arr[j+1];

       arr[j+1]=temp;

       }

       }

       left++;

       }

       }

       intmain(intargc,char*argv[]){

       intarr[NUM],i,j,temp;

       printf("请输入个数:\n");

       for(i=0;iNUM;i++){

       printf("请输入第(%d)个数:",i+1);

       scanf("%d",arr[i]);

       }

       printf("\n输入如下排列:\n");

       for(i=0;iNUM;i++){

       printf("%4d",arr[i]);

       }/

*

       for(i=0;iNUM;i++){

       for(j=i+1;jNUM;j++){

       if(arr[i]arr[j]){

       temp=arr[i];

       arr[i]=arr[j];

       arr[j]=temp;

       }

       }

       }*/

       bubbleSort_1(arr,NUM);

       /*printf("\n从小到大如下排列:\n");

       for(i=0;iNUM;i++){

       printf("%4d",arr[i]);

       }*/

       printf("\n从大到小如下排列:\n");

       for(i=NUM-1;i=0;i--){

       printf("%4d",arr[i]);

       }

       return0;

       }

c语言编程代码

       ä¸¤ç§æ–¹æ³•æˆ‘写在一起,可以独立拆开。

       #includestdio.h

       voidfinda1(chara[3][]);

       voidfinda2(chara[3][]);

       voidshow(char(*p)[]);

       intmain()

       {

chara[3][]={ { "gehajl"},{ "aa7"},{ "ccabbbabbb"}};

printf("原数组内容:\n");

show(a);

printf("\n1、用数组指针的方法(函数finda1):\n");

finda1(a);

printf("执行后:\n");

show(a);

printf("\n---------------------\n");

charb[3][]={ { "gehajl"},{ "aa7"},{ "ccabbbabbb"}};

printf("原数组内容:\n");

show(a);

printf("\n2、用指针数组的方法(函数finda2):\n");

finda2(b);

printf("执行后:\n");

show(b);

return0;

       }

       voidfinda1(chara[3][])

       {

inti,j;

char(*p)[]=a;

for(i=0;i3;i++)

       for(j=0;j;j++)

if(p[i][j]=='a')

       printf("发现:第%d行第%d个元素是‘a’,已替换\n",i+1,j+1),p[i][j]='1';

       }

       voidfinda2(chara[3][])

       {

inti,j;

char*p[3]={ a[0][0],a[1][0],a[2][0]};

for(i=0;i3;i++)

       for(j=0;j;j++)

if(p[i][j]=='a')

       printf("发现:第%d行第%d个元素是‘a’,已替换\n",i+1,j+1),p[i][j]='1';

       }

       voidshow(char(*p)[])

       {

inti,j;

for(i=0;i3;i++,printf("\n"))

       for(j=0;j;j++)

printf("%c",p[i][j]);

       }

位系统上源码编译位libcurl库

       有时候需要交叉编译libcurl,比如目标机器是位c源码位系统的,但是位c源码本地机器是位系统的,而且由于某些原因,位c源码hashtab源码我们无法在位系统上直接编译,位c源码所以需要用到交叉编译

       libcurl是位c源码依赖openssl的,所以先编译openssl的位库 完整编译选项配置如下:

       详细选项含义如下:预先已经export CC的版本 配置-m指定编译位的库 配置–prefix指定openssl的安装目录 配置–openssldir指定openssl的头文件目录 配置shared关键字指定编译时生成动态库(libssl.so/libcrypto.so及其相关软连接)然后再make && make install即可

       有时候有的系统是默认安装了位zlib库的,那么就可以跳过这一步,qtwebkit源码但是有的系统需要自己下载编译zlib-位库 完整编译选项配置如下:直接修改CMakeLists.txt文件,增加以下两行 set(CMAKE_C_FLAGS “-m”) set(CMAKE_CXX_FLAGS “-m”) 详细选项含义如下:配置CMAKE_C_FLAGS指定编译位库环境 配置CMAKE_CXX_FLAGS指定编译位库环境然后再mkdir build && cd build && cmake .. && make && make install即可

       最后就是编译libcurl 完整编译选项配置如下:

       详细选项含义如下:配置PKG_CONFIG_PATH指定启动openssl选项(启动这个选项,就会默认链接lssl,lcrypto,keymaker源码lz三个库) 配置CFLAGS指定编译位库环境 配置CPPFLAGS指定链接的库的头文件 配置LDFLAGS指定链接的库的路径然后再make && make install即可

       当编译第三方库的时候,如果有CMakeLists.txt,直接用CMakeLists.txt编译就很方便;如果只有configure,那么需要先了解编译选项执行./configure –help来查看当前支持的编译选项然后根据提示配置一下我们需要指定的选项,比如自己指定的openssl的版本的库和头文件路径名,比如CC的版本,比如安装路径等等 (当然,如果不需要额外配置这些东西的话,直接走默认配置的话,那么直接执行./config或者./configure就行)然后在生成Makefile之后,再make && make install即可

copyright © 2016 powered by 皮皮网   sitemap