C语言APi或者函数js文档就绪函数

如何编写自定义api函数
[问题点数:20分,结帖人xzjxylophone]
如何编写自定义api函数
[问题点数:20分,结帖人xzjxylophone]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2007年7月 C/C++大版内专家分月排行榜第一2007年6月 C/C++大版内专家分月排行榜第一2007年5月 C/C++大版内专家分月排行榜第一2007年4月 C/C++大版内专家分月排行榜第一2007年3月 C/C++大版内专家分月排行榜第一2007年2月 C/C++大版内专家分月排行榜第一2007年1月 C/C++大版内专家分月排行榜第一2006年12月 C/C++大版内专家分月排行榜第一2006年11月 C/C++大版内专家分月排行榜第一2006年9月 C/C++大版内专家分月排行榜第一2006年8月 C/C++大版内专家分月排行榜第一2006年7月 C/C++大版内专家分月排行榜第一2006年6月 C/C++大版内专家分月排行榜第一2006年5月 C/C++大版内专家分月排行榜第一2006年4月 C/C++大版内专家分月排行榜第一2006年3月 C/C++大版内专家分月排行榜第一2005年8月 C/C++大版内专家分月排行榜第一
2007年8月 C/C++大版内专家分月排行榜第二2006年10月 C/C++大版内专家分月排行榜第二
匿名用户不能发表回复!|《C语言编程规范学习笔记》
《C语言编程规范学习笔记》
代码总体原则:
程序必须为阅读它的人而编写,只是顺便用于机器执行。
编写程序应该以人为本,计算机第二。
废弃的代码(没有被调用的函数和全局变量)要及时清除,重复代码应该尽可能提炼成函数。
如果重构/修改其他风格的代码时,比较明智的做法是根据现有代码的现有风格继续编写代码。
我们倾向于减少包含头文件,尤其是在头文件中包含头文件,以控制改动代码后的编译时间。
1. 头文件中适合放置接口的声明,不适合放置实现。
2. 头文件应当职责单一。
3. 头文件应向稳定的方向包含。
1. 每一个.c文件应有一个同名.h文件,用于声明需要对外公开的接口。
2. 禁止头文件循环依赖。
3. .c/.h文件禁止包含用不到的头文件。
4. 头文件应当自包含。
简单的说,自包含就是任意一个头文件均可独立编译。如果一个文件包含某个头文件,还要包含另外一个头文件才能工作的话,就会增加交流障碍,给这个头文件的用户增添不必要的负担。
5. 总是编写内部#include保护符(#define 保护)。
6. 禁止在头文件中定义变量。
7. 只能通过包含头文件的方式使用其他.c提供的接口,禁止在.c中通过extern的方式使用外部函数接口、变量。
8. 禁止在extern
"C"中包含头文件。
1. 一个模块通常包含多个.c文件,建议放在同一个目录下,目录名即为模块名。为方便外部使用者,建议每一个模块提供一个.h,文件名为目录名。
2. 如果一个模块包含多个子模块,则建议每一个子模块提供一个对外的.h,文件名为子模块名。
说明:降低接口使用者的编写难度。
3. 头文件不要使用非习惯用法的扩展名,如.inc。
4. 同一产品统一包含头文件排列方式。
函数设计的精髓:编写整洁函数,同时把代码有效组织起来。
1. 一个函数仅完成一项功能。
2. 重复代码应该尽可能提炼成函数。
3. 避免函数过长,新增函数不超过50行(非空非注释行)。
4. 避免函数的代码块嵌套过深,新增函数的代码块嵌套不超过4层。
5. 可重入函数应避免使用共享变量;若需要使用,则应通过互斥手段(关中断、信号量)对其加以保护。
说明:可重入函数是指可能被多个任务并发调用的函数。在多任务操作系统中,函数具有可重入性是多个任务可以共用此函数的必要条件。共享变量指的全局变量和static变量。
编写C语言的可重入函数时,不应使用static局部变量,否则必须经过特殊处理,才能使函数具有可重入性。
6. 对参数的合法性检查,由调用者负责还是由接口函数负责,应在项目组/模块内应统一规定。缺省由调用者负责。
7. 对函数的错误返回码要全面处理。
示例写法:
FILE *fp = fopen(
"./writeAlarmLastTime.log","r");
if(fp == NULL)
char buff[128] = "";
if (fscanf(fp,“%s”,buff) == EOF) //检查函数fscanf的返回值,确保读到数据
&fclose(fp);
}&&&&&&&&&
fclose(fp);
long fileTime = getAlarmTime(buff); //解析获取最新的告警时间;
8. 设计高扇入,合理扇出(小于7)的函数。
说明:扇出是指一个函数直接调用(控制)其它函数的数目,而扇入是指有多少上级函数调用它。
9. 废弃代码(没有被调用的函数和变量)要及时清除。
10. 函数不变参数使用const。
说明:不变的值更易于理解/跟踪和分析,把const作为默认选项,在编译时会对其进行检查,使代码更牢固/更安全。
11. 函数应避免使用全局变量、静态局部变量和I/O操作,不可避免的地方应集中使用。
12. 检查函数所有非参数输入的有效性,如数据文件、公共变量等。
13. 函数的参数个数不超过5个。
14. 除打印类函数外,不要使用可变长参函数。
15. 在源文件范围内声明和定义的所有函数,除非外部可见,否则应该增加static关键字。
标识符通用命名规则:
1. 标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。
2. 除了常见的通用缩写以外,不使用单词缩写,不得使用汉语拼音。
3. 产品/项目组内部应保持统一的命名风格。
4. 用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。
5. 尽量避免名字中出现数字编号,除非逻辑上的确需要编号。
6. 标识符前不应添加模块、项目、产品、部门的名称作为前缀。
7. 平台/驱动等适配代码的标识符命名风格保持和平台/驱动一致。
8. 重构/修改部分代码时,应保持和原有代码的命名风格一致。
文件命名规则:
1. 文件命名统一采用小写字符。
变量命名规则:
1. 全局变量应增加“g_”前缀。
2. 静态变量应增加“s_”前缀。
3. 禁止使用单字节命名变量,但允许定义i、j、k作为局部循环变量。
4. 不建议使用匈牙利命名法。
5. 使用名词或者形容词+名词方式命名变量。
函数命名规则:
1. 函数命名应以函数要执行的动作命名,一般采用动词或者动词+名词的结构。
2. 函数指针除了前缀,其他按照函数的命名规则命名。
宏的命名规则:
1. 对于数值或者字符串等等常量的定义,建议采用全大写字母,单词之间加下划线‘_’的方式命名(枚举同样建议使用此方式定义)。
2. 除了头文件或编译开关等特殊标识定义,宏定义不能使用下划线‘_’开头和结尾。
1. 一个变量只有一个功能,不能把一个变量用作多种用途。
2. 结构功能单一;不要设计面面俱到的数据结构。
3. 不用或者少用全局变量。
4. 防止局部变量与全局变量同名。
5. 通讯过程中使用的结构,必须注意字节序。
6. 严禁使用未经初始化的变量作为右值。
7. 构造仅有一个模块或函数可以修改、创建,而其余有关模块或函数只访问的全局变量,防止多个不同模块或函数都可以修改、创建同一全局变量的现象。
8. 使用面向接口编程思想,通过API访问数据:如果本模块的数据需要对外部模块开放,应提供接口函数来设置、获取,同时注意全局数据的访问互斥。
9. 在首次使用前初始化变量,初始化的地方离使用的地方越近越好。
10. 明确全局变量的初始化顺序,避免跨模块的初始化依赖。
11. 尽量减少没有必要的数据类型默认转换与强制转换。
宏、常量:
1. 用宏定义表达式时,要使用完备的括号。
2. 将宏所定义的多条表达式放在大括号中。
3. 使用宏时,不允许参数发生变化。
4. 不允许直接使用魔鬼数字。
5. 除非必要,应尽可能使用函数代替宏。
6. 常量建议使用const定义代替宏。
7. 宏定义中尽量不使用return、goto、continue、break等改变程序流程的语句。
质量保证:
1. 代码质量保证优先原则
2. 要时刻注意易混淆的操作符。
3. 必须了解编译系统的内存分配方式,特别是编译系统对不同类型的变量的内存分配规则,如局部变量在何处分配、静态变量在何处分配等。
4. 不仅关注接口,同样要关注实现。
5. 禁止内存操作越界。
6. 禁止内存泄漏。
7. 禁止引用已经释放的内存空间。
8. 编程时,要防止差1错误。
9. 所有的if ... else
if结构应该由else子句结束
;switch语句必须有default分支。
10. 函数中分配的内存,在函数退出之前要释放。
11. if语句尽量加上else分支,对没有else分支的语句要小心对待。
12. 不要滥用goto语句。
13. 时刻注意表达式是否会上溢、下溢。
程序效率:
1. 在保证软件系统的正确性、简洁、可维护性、可靠性及可测性的前提下,提高代码效率。
2. 通过对数据结构、程序算法的优化来提高效率。
3. 将不变条件的计算移到循环体外。
4. 对于多维大数组,避免来回跳跃式访问数组成员。
5. 创建资源库,以减少分配对象的开销。
6. 将多次被调用的
“小函数”改为inline函数或者宏实现。
1. 优秀的代码可以自我解释,不通过注释即可轻易读懂。
2. 注释的内容要清楚、明了,含义准确,防止注释二义性。
3. 在代码的功能、意图层次上进行注释,即注释解释代码难以直接表达的意图,而不是重复描述代码。
4. 修改代码时,维护代码周边的所有注释,以保证注释与代码的一致性。不再有用的注释要删除。
5. 文件头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者姓名、工号、内容、功能说明、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。
6. 函数声明处注释描述函数功能、性能及用法,包括输入和输出参数、函数返回值、可重入的要求等;定义处详细描述函数功能和实现要点,如实现的简要步骤、实现的理由、设计约束等。
7. 全局变量要有较详细的注释,包括对其功能、取值范围以及存取时注意事项等的说明。
8. 注释应放在其代码上方相邻位置或右方,不可放在下面。如放于上方则需与其上面的代码用空行隔开,且与下方代码缩进相同。
9. 对于switch语句下的case语句,如果因为特殊情况需要处理完一个case后进入下一个case处理,必须在该case语句处理完、下一个case语句前加上明确的注释。
10. 避免在注释中使用缩写,除非是业界通用或子系统内标准化的缩写。
11. 同一产品或项目组统一注释风格。
12. 避免在一行代码或表达式的中间插入注释。
13. 注释应考虑程序易读及外观排版的因素,使用的语言若是中、英兼有的,建议多使用中文,除非能用非常流利准确的英文表达。对于有外籍员工的,由产品确定注释语言。
14. 文件头、函数头、全局常量变量、类型定义的注释格式采用工具可识别的格式。
排版与格式:
1. 程序块采用缩进风格编写,每级缩进为4个空格。
2. 相对独立的程序块之间、变量说明之后必须加空行。
3. 一条语句不能过长,如不能拆分需要分行写。一行到底多少字符换行比较合适,产品可以自行确定。
4. 多个短语句(包括赋值语句)不允许写在同一行内,即一行只写一条语句。
5. if、for、do、while、case、switch、default等语句独占一行。
6. 在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格;进行非对等操作时,如果是关系密切的立即操作符(如-&),后不应加空格。
7. 注释符(包括‘’)与注释内容之间要用一个空格进行分隔。
8. 源程序中关系较为紧密的代码应尽可能相邻。
1. 表达式的值在标准所允许的任何运算次序下都应该是相同的。
2. 函数调用不要作为另一个函数的参数使用,否则对于代码的调试、阅读都不利。
3. 赋值语句不要写在if等语句中,或者作为函数的参数使用。
4. 赋值操作符不能使用在产生布尔值的表达式上。
代码编辑、编译:
1. 使用编译器的最高告警级别,理解所有的告警,通过修改代码而不是降低告警级别来消除所有告警。
2. 在产品软件(项目组)中,要统一编译开关、静态检查选项以及相应告警清除策略。
3. 本地构建工具(如PC-Lint)的配置应该和持续集成的一致。
4. 使用版本控制(配置管理)系统,及时签入通过本地构建的代码,确保签入的代码不会影响构建成功。
5. 要小心地使用编辑器提供的块拷贝功能编程。
1. 模块划分清晰,接口明确,耦合性小,有明确输入和输出,否则单元测试实施困难。
2. 在同一项目组或产品组内,要有一套统一的为集成测试与系统联调准备的调测开关及相应打印函数,并且要有详细的说明。
3. 在同一项目组或产品组内,调测打印的日志要有统一的规定。
4. 使用断言记录内部假设。
5. 不能用断言来检查运行时错误。
6. 为单元测试和系统故障注入测试准备好方法和通道。
1. 对用户输入进行检查。
2. 确保所有字符串是以NULL结束。
3. 不要将边界不明确的字符串写到固定长度的数组中。
4. 避免整数溢出。
5. 避免符号错误。
6. 避免截断错误。
7. 确保格式字符和参数匹配。
8. 避免将用户输入作为格式化字符串的一部分或者全部。
9. 避免使用strlen()计算二进制数据的长度。
10. 使用int类型变量来接受字符I/O函数的返回值。
11. 防止命令注入。
单元测试:
1. 在编写代码的同时,或者编写代码前,编写单元测试用例验证软件设计/编码的正确。
2. 单元测试关注单元的行为而不是实现,避免针对函数的测试。
可移植性:
1. 不能定义、重定义或取消定义标准库/平台中保留的标识符、宏和函数。
2. 不使用与硬件或操作系统关系很大的语句,而使用建议的标准语句,以提高软件的可移植性和可重用性。
3. 除非为了满足特殊需求,避免使用嵌入式汇编。
业界编程规范:
google C++编程指南
汽车业C语言使用规范(MISRA)
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。windows下的c语言和linux 下的c语言以及C标准库和系统API - 简书
windows下的c语言和linux 下的c语言以及C标准库和系统API
windows下的c语言和linux 下的c语言以及C标准库和系统API1.引出我们的问题?标准c库都是一样的!大家想必都在windows下做过文件编程,在linux下也是一样的函数名,参数都一样。当时就有了疑问,因为我们非常清楚其本质是不可能一样的,源于这是俩个操作系统啊!但由于c标准库的封装就实现了接口一样。但是如果往深入,我们就非常清楚了在这层封装上还有一层封装其实就是操作系统对文件操作的封装,也就是文件IO。而我们c语言的封装叫标准IO,他们有什么区别那?显然标准iO是基于文件io的,标准IO调用了文件IO,也优化了文件IO,例如引入缓存机制。2.上面我说的就是下面的几个点但如果涉及到系统调用那就不同了!不同的系统提供的系统调用是不同的,有的调用可能相同(接口),但是内部实现不同!如果没有涉及系统独有的库函数或者编程方法(即只用符合ANSI C标准的代码和方法)就没有区别 (标准库,标准IO)如果涉及到系统编程,二者有所区别,主要是库函数有所不同,而且文件系统不同、对某些函数的执行方式不同。(文件IO,操作系统API)3.具体的一些区别\n 为ASCII的0x0a 换行\r 为ASCII的0x0d 回车在windows 系统中,当你输入回车时会自动变成\r\n在linux下的回车键只代表\n而在windows下的回车键表示\r\n\n为进入下一行,\r为打印头回到行首上linux/unix下只用\n,它就表示回车+换行而windows下,\r只回车不换行的,\n是换行,但在有些编辑中,单独的\n是不会换行的(如notepad)一般在程序中,写\n就可以了,它在linux或windows中都能实现回车+换行的功能(只是在文本文件中,linux只会有0x0a,windows会自动换为0x0d 0x0a)下面举个例子:#include int main() { char a[10]="abc\r"; printf(a); return 0; }程序运行时没有任何输出。原因就是 \r 回车 表示打印头回到该行起始位置,从而覆盖了abc,所以控制台上就没有任何输出啦!函数库的区别linux下的C函数库和windows下的函数库系统调用的机制不一样Glibc包含了主要的C库。这个库提供了基本例程,用于分配内存、搜索目录、打开关闭文件、读写文件、字串处理、模式匹配、数学计算等等。所说的机制不一样不单是指中断号的问题,中断号也是通过input参数和output把函数地址和输出地址定位在寄存器的,那些函数在windows和linux下的实现应该是不一样的,就拿文件系统来说,ext3和fat32的怎么可能一样.还有mm内存管理,都是不一样的.中断还是属于硬件层的,X86上的应该都差不多,但操作系统层的实现就大不相同了.4.其他区别:1。系统平台不一样底层开发就涉及到了系统内核的问题,对于linux来说,你可以知道它里面是什么结构,而windows。。。2。编译器环境不一样linux采用gcc编译器,gdb调试工具,和多种可视化的编辑器如
emacs,kedit等等,也有文本的vi/vim,GDB的功能是非常强大的,个人认为较win下的好尽管win下地mingw,devcpp集成了gcc,但是搞的总让人不爽~,gcc对标准的支持是相当的好3。针对人群不一样win下主要还是面向商业化的开发,而绝大多数的编程爱好者则喜欢属于自己开阔自由的系统下编程,不愿意禁锢在windows下(MS)的包围中4。发展方向不一样。OpenSource的思想已经在linux这片净土开花,参见GPL....。找资料方便,源代码公开,可以体验开发的乐趣win下,ms逐步把一批开发人员束缚在它自己的系统里面,开发环境越来越傻瓜,这能不能叫人性化呢?搞到最后。。。可能越走越远~5.版权问题win下的好多好多东西都涉及到版权问题,linux的free软件虽然是开放软件,不过好多好多都是免费用于商业化的。。。当然有的需要开发源代码,好多也不需要~C++的区别也差不多从程序完成的功能来看,函数库提供的函数通常是不需要操作系统的服务,函数是在用户空间内执行的,除非函数涉及到I/O操作等,一般是不会切到核心态的。系统调用是要求操作系统为用户提供进程,提供某种服务,通常是涉及系统的硬件资源和一些敏感的软件资源等。函数库的函数,尤其与输入输出相关的函数,大多必须通过linux的系统调用来完成。因此我们可以将函数库的函数当成应用程序设计人员与系统调用程序之间的一个中间层,通过这个中间层,我们可以用一致的接口来安全的调用系统调用。这样程序员可以只要写一次代码就能够在不同版本的linux系统间使用积压种具体实现完全不同的系统调用。至于如何实现对不同的系统调用的兼容性问题,那是函数库开发者所关心的问题。从程序执行效率来看,系统调用的执行效率大多要比函数高,尤其是处理输入输出的函数。当处理的数据量比较小时,函数库的函数执行效率可能比较好,因为函数库的作法是将要处理的数据先存入缓冲区内,等到缓冲区装满了,再将数据一次写入或者读出。这种方式处理小量数据时效率比较高,但是在进行系统调用时,因为用户进程从用户模式进入系统核心模式,中间涉及了许多额外的任务的切换工作,这些操作称为上下文切换,此类的额外工作会影响系统的执行效率。但是当要处理的数据量比较大时,例如当输入输出的数据量超过文件系统定义的尽寸时,利用系统调用可获得较高的效率。从程序的可移植性的角度来看,相对于系统调用,C语言的标准备函数库(ANSI C) 具备较高的可移植性,在不同的系统环境下,只要做很少的修改,通常情况是不需要修改的。Linux C中库函数和系统调用的区别库函数是高层的,完全运行在用户空间,为程序员提供调用真正的在幕后完成实际事务的系统调用的更方便的接口。系统调用在内核态运行并且由内核自己提供。标准C库函数printf()可以被看做是一个通用的输出语句,但它实际做的是将数据转化为符合格式的字符串并且调用系统调用 write()输出这些字符串。是否想看一看printf()究竟使用了哪些系统调用? 这很容易,编译下面的代码。复制代码 代码如下:#includeint main(void){ printf("hello"); return 0; }使用命令gcc -Wall -o hello hello.c编译。用命令 strace hello 跟踪该可执行文件。是否很惊讶? 每一行都和一个系统调用相对应。 strace是一个非常有用的程序,它可以告诉你程序使用了哪些系统调用和这些系统调用的参数,返回值。 这是一个极有价值的查看程序在干什么的工具。在输出的末尾,你应该看到这样类似的一行 write(1, "hello", 5hello)。这就是我们要找的。藏在面具printf() 的真实面目。既然绝大多数人使用库函数来对文件I/O进行操作(像 fopen, fputs, fclose)。 你可以查看man说明的第二部分使用命令man 2 write 。man说明的第二部分专门介绍系统调用(像kill()和read())。 man说明的第三部分则专门介绍你可能更熟悉的库函数(像cosh()和random())。你甚至可以编写代码去覆盖系统调用,正如我们不久要做的。骇客常这样做来为系统安装后门或木马。 但你可以用它来完成一些更有益的事,像让内核在每次某人删除文件时输出 “ Tee hee, that tickles!” 的信息。——张飞online 日23:06:45
未来是属于愿意弄脏双手的人们!
一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于隔离 : 分为 虚拟地址空间 和 物理地址空间 分段 : 把一段程序所需要的内存空间大小映射到某个地址空间 分页 : 把地址空间人为地等分成固定大小的页,每一页...
2016年国庆假期终于把此书过完,整理笔记和体会于此。 关于书名 书名源于俄罗斯的演员斯坦尼斯拉夫斯基创作的《演员的自我修养》,作者为了写这本书前前后后修改了三十年之久,临终前才同意不在修改,拿去出版。使用这个书名一方面书单内容的确不是介绍一门新的编程语言或是展示一些实用的...
百战程序员_ Java1573题 QQ群:034603 掌握80%年薪20万掌握50%年薪10万 全程项目穿插, 从易到难,含17个项目视频和资料持续更新,请关注www.itbaizhan.com 国内最牛七星级团队马士兵、高淇等11位十年开发经验专...
Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意义的,您不是第一个为此困惑的人,当然,也不会是最后一个:) 大多数的美国人读 ubuntu 时,将 u 作为元音发音,类似单词 who 或者 boo ,重音在第...
linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大家期待吧 命令区 系统管理与维护命令 date date(选项)(参数)|
说明 || :-------- | --------:||...
1.三个故事的正常时间顺序:a.银行职员特丽莎一心改变命运而起贪念 b.黑帮三脚豹对朋友义无反顾后,朋友遇到困难,不退缩
c.高级警察,张正方面对生活的巨变,一向坚守的原则发生改变 2对“夺命金”的理解:“金”代表金钱,金钱可以给你带来了你需要的东西.权力、……一不小心也...
主进程和渲染进程electron的程序运行时,分为主进程和渲染进程。主进程即为 var app = require('app');所在一侧,也是程序的入口。通过 BrowserWindow实例 loadUrl访问网页时,会创建出渲染进程。某些包是只有主进程才能包含的,如常用...
我想,任何一个女生,在成为母亲的时候,都会对宝宝的未来有一系列的设想。我也不例外,总想把最好的东西都给她,哪怕明明知道总有一天,她会离家远行或者拥有自己的小家。宝宝出生的这几天,思考了很多问题,也回顾了自己过去二十三年里所经历的一切,还有曾经的迷茫与叛逆,对父母的不了解。渐...
命题关键词:漂泊、沧海一粟、瓶子 原谅我一生放荡不羁爱产品 (捂脸)。。。 QQ邮箱的漂流瓶功能大家都用过么?我上大学的时候有一段时间对它很着迷,每天就跟刮彩票一样,看看今天能不能刮到宝贝。这个功能刚上线的时候,用户都比较单纯,大家真的会写一些不好对身边人讲的烦恼或是想让全...
上周末你怎么过的? 睡到自然醒,套上宽松舒服的衣服,出门吃个全是淀粉的brunch(解宿醉),再来一杯起泡酒(而不是咖啡)让自己舒舒服服地彻底醒来? 恭喜你,你的周末完美指数已经打败了99%的人类。 作为一支完美的夏日爬梯/Brunch酒,起泡酒,可谓人见人爱。 But,你...&>&C语言 API帮助文档
C语言 API帮助文档
上传大小:2.42MB
C++Primer4E
C函数(index)
C语言编程宝典
C语言资料大全1.0
Tc图形函数详解
综合评分:4
下载个数:
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有8条
确定挺好用的,很适合C语言的初学者~
还以为是官方API文档
字体又小又难看
参数也没说明白
函数的例子里面居然没有该函数
其他的资料 捆绑在一起
其实我只要API 但是这API却这样。。。
还不错哦,倒还是比较全
whurongfei
综合评分:
积分/C币:5
whurongfei
综合评分:
积分/C币:5
怎能不学霸
综合评分:
积分/C币:9
综合评分:
积分/C币:5
怎能不学霸
综合评分:
积分/C币:9
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
C语言 API帮助文档
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
举报的资源分:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*详细原因:
C语言 API帮助文档

我要回帖

更多关于 js文档就绪函数 的文章

 

随机推荐