易截截图软件、单文件、免安装、纯绿色、仅160KB
热门标签: c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 最新文章 : c

extern "C"

extern "C"
目录
概述 编译方式 习惯用法

概述
  extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的;其次,被它修饰的目标是“C”的。让我们来详细解读这两重含义。
  (1) 被extern "C"限定的函数或变量是extern类型的
  extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。记住,下列语句:
  extern int a;
  仅仅是一个变量的声明,其并不是在定义变量a,并未为a分配内存空间。变量a在所有模块中作为一种全局变量只能被定义一次,否则会出现连接错误。
  通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。例如,如果模块B欲引用该模块A中定义的全局变量和函数时只需包含模块A的头文件即可。这样,模块B中调用模块A中的函数时,在编译阶段,模块B虽然找不到该函数,但是并不会报错;它会在连接阶段中从模块A编译生成的目标代码中找到此函数。
  与extern对应的关键字是static,被它修饰的全局变量和函数只能在本模块中使用。因此,一个函数或变量只可能被本 ......

用C实现串匹配的几种方法,kmp和BM

本来不想自己写的,但网上的大都是c++实现的,有些自称是C实现的 复制到编译器上根本运行不了。
KMP还是很经典的算法,我就不加注释了,直接返回第几个数匹配..
#include <stdio.h>
#include <stdlib.h>
void getNext(char t[]);
int next[80];
int main()
{
    char s[80],t[80];
    int result=0;
    printf("输入字符串:");
    gets(s);
    printf("输入字符串:");
    gets(t);
    getNext(t);
    int i=0,j=0;
    while(i<strlen(s)&&j<strlen(t))
    {
        if(s[i]==t[j]) {i++;j++;}
        else
        {
             j=next[j];
             if(j==-1) {i++;j++;}
        }
    }
    if(j>=strlen(t)) result=i-j+1;
    else resul ......

嵌入式Linux的LCD驱动(FB @ s3c2410)

CPU : ARM9 s3c2410 
LCD : 规格不明(这个很无奈,但是我所知道的只有一个分辨率)
源码修改:
/linux-2.6.30.4/arch/arm/mach-s3c2410/mach-smdk2410.c
        在这个文件中加入framebuffer的初始化数据结构(具体数据参照LCD技术手册)如下:
#include <mach/fb.h> // added by B.Zhou for the LCD driver
/* The info of LCD driver start */
static struct s3c2410fb_display smdk2410_lcd_cfg __initdata = {
    .lcdcon5    = S3C2410_LCDCON5_FRM565 |
              S3C2410_LCDCON5_INVVLINE |
              S3C2410_LCDCON5_INVVFRAME |
              S3C2410_LCDCON5_PWREN |
              S3C2410_LCDCON5_HWSWP,
    .type        = S3C2410_LCDCON1_TFT,
    .width   ......

嵌入式Linux的LCD驱动(FB @ s3c2410)

CPU : ARM9 s3c2410 
LCD : 规格不明(这个很无奈,但是我所知道的只有一个分辨率)
源码修改:
/linux-2.6.30.4/arch/arm/mach-s3c2410/mach-smdk2410.c
        在这个文件中加入framebuffer的初始化数据结构(具体数据参照LCD技术手册)如下:
#include <mach/fb.h> // added by B.Zhou for the LCD driver
/* The info of LCD driver start */
static struct s3c2410fb_display smdk2410_lcd_cfg __initdata = {
    .lcdcon5    = S3C2410_LCDCON5_FRM565 |
              S3C2410_LCDCON5_INVVLINE |
              S3C2410_LCDCON5_INVVFRAME |
              S3C2410_LCDCON5_PWREN |
              S3C2410_LCDCON5_HWSWP,
    .type        = S3C2410_LCDCON1_TFT,
    .width   ......

一段用来判断日期是星期几的C代码

/////////////////////////////////////////////////
// 主题:一段用来判断日期是星期几的代码
// 描述:摘自《CCFAQ》
// 作者:天之枫
// 时间:2010-02-13
///////////////////////////////////////////////// 
#include <stdio.h>
int dayofweek(int y, int m, int d) // 判断输入的日期是星期几
{
static int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};
y -= m < 3;
return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;
} /* 0 = Sunday */
int main(void)
{
printf( "今天是星期%d \n", dayofweek(2010,2,13) );
return 0;
}
  ......

[C/C++ Digestion] – 重载操作符


[C/C++ Digestion] –
重载操作符
作者:
Jason Lee @
http://blog.csdn.net/jasonblog
日期:
2010-04-17
 
[1]
重载操作符
重载操作符从大的方面来讲可以分为两类:最好或必须作为类的成员函数的,以及相反。而具体地讲,最好或必须作为类的成员函数的有赋值操作符
( = )
、下标操作符
( [] )
、调用操作符
( () )
、成员访问箭头操作符
( ->
,目前列出的操作符都必须为成员函数
)
、星号解引用操作符
( * )
、复合赋值操作符
( +=

)
、自增、自减。其它的一些操作符,如算术操作符、相等操作符、关系操作符和位操作符,最好定义为非成员函数,在这种情况下,通常需要将其定义为类的友元函数。当然,还有一些是不建议重载的操作符,如逗号、取地址运算符和逻辑运算符等。
 
[2]
赋值操作符
赋值操作符必须是类的成员函数,因为编译器需要知道类是否有赋值操作符这个信息。并且,赋值操作符必须返回对
*this
的引用,也就是左操作数
(
对象自身
)
的引用。
同样的,复合赋值操作符也应返回对
*this
的引用。
如下是一段示例代码:
#include <iostream>
using namespace std;

class Demo { ......

[C/C++ Digestion] – 重载操作符


[C/C++ Digestion] –
重载操作符
作者:
Jason Lee @
http://blog.csdn.net/jasonblog
日期:
2010-04-17
 
[1]
重载操作符
重载操作符从大的方面来讲可以分为两类:最好或必须作为类的成员函数的,以及相反。而具体地讲,最好或必须作为类的成员函数的有赋值操作符
( = )
、下标操作符
( [] )
、调用操作符
( () )
、成员访问箭头操作符
( ->
,目前列出的操作符都必须为成员函数
)
、星号解引用操作符
( * )
、复合赋值操作符
( +=

)
、自增、自减。其它的一些操作符,如算术操作符、相等操作符、关系操作符和位操作符,最好定义为非成员函数,在这种情况下,通常需要将其定义为类的友元函数。当然,还有一些是不建议重载的操作符,如逗号、取地址运算符和逻辑运算符等。
 
[2]
赋值操作符
赋值操作符必须是类的成员函数,因为编译器需要知道类是否有赋值操作符这个信息。并且,赋值操作符必须返回对
*this
的引用,也就是左操作数
(
对象自身
)
的引用。
同样的,复合赋值操作符也应返回对
*this
的引用。
如下是一段示例代码:
#include <iostream>
using namespace std;

class Demo { ......

C/C++文件操作

 原文地址:http://www.layz.net/blog/user1/xuanxuan/archives/2006/67.html
 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:

1、插入器(<<)
  向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout<<"Write
Stdout"<<'\n';就表示把字符串"Write Stdout"和换行字符('\n')输出到标准输出流。
2、析取器(>>)
  从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准输入流中读取
一个指定类型(即变量x的类型)的数据。
  在C++中,对文件的操作是通过stream的子类fstream(file
stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h。下面就把此类的文件操作过程一一道来。
一、打开文件
  在fstream类中,有一个成员函数open(),就是用来打开文件的,其原型是:
void open(const char* filename,int mode,int access);
参数:
filename:  要打开的文件名
......

C/C++文件操作

 原文地址:http://www.layz.net/blog/user1/xuanxuan/archives/2006/67.html
 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:

1、插入器(<<)
  向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout<<"Write
Stdout"<<'\n';就表示把字符串"Write Stdout"和换行字符('\n')输出到标准输出流。
2、析取器(>>)
  从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准输入流中读取
一个指定类型(即变量x的类型)的数据。
  在C++中,对文件的操作是通过stream的子类fstream(file
stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h。下面就把此类的文件操作过程一一道来。
一、打开文件
  在fstream类中,有一个成员函数open(),就是用来打开文件的,其原型是:
void open(const char* filename,int mode,int access);
参数:
filename:  要打开的文件名
......
总记录数:2015; 总页数:336; 每页6 条; 首页 上一页 [77] [78] [79] [80] 81 [82] [83] [84] [85] [86]  下一页 尾页
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号