易截截图软件、单文件、免安装、纯绿色、仅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

C++中extern “C”含义深层探索(zz)


本文关键词: c++ 含义
1.引言
C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。
2.从标准头文件说起
某企业曾经给出如下的一道面试题:
面试题:为什么标准头文件都有类似以下的结构? 
#ifndef __INCvxWorksh
#define __INCvxWorksh 
#ifdef __cplusplus
extern "C" {
#endif 
/*...*/ 
#ifdef __cplusplus
}
#endif 
#endif /* __INCvxWorksh */
分析
显然,头文件中的编译宏“#ifndef __INCvxWorksh、#define __INCvxWorksh、#endif” 的作用是防止该头文件被重复引用。
那么
#ifdef __cplusplus
extern "C" {
#endif 
#ifdef __cplusplus
}
#endif 
的作用又是什么呢?我们将在下文一一道来。
3.深层揭密extern "C"
extern ......

C++中extern “C”含义深层探索(zz)


本文关键词: c++ 含义
1.引言
C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。
2.从标准头文件说起
某企业曾经给出如下的一道面试题:
面试题:为什么标准头文件都有类似以下的结构? 
#ifndef __INCvxWorksh
#define __INCvxWorksh 
#ifdef __cplusplus
extern "C" {
#endif 
/*...*/ 
#ifdef __cplusplus
}
#endif 
#endif /* __INCvxWorksh */
分析
显然,头文件中的编译宏“#ifndef __INCvxWorksh、#define __INCvxWorksh、#endif” 的作用是防止该头文件被重复引用。
那么
#ifdef __cplusplus
extern "C" {
#endif 
#ifdef __cplusplus
}
#endif 
的作用又是什么呢?我们将在下文一一道来。
3.深层揭密extern "C"
extern ......

C++完全兼容C的语法吗?

对于C编写程序,大部分都可以通过,但是不会完全兼容,举两个例子:
1.
char *str;
str = malloc(32);
2.
char ch[3] = "abc";
gcc  -g  -o test test.c
g++ -g -o test test.c
因为C++检查更加严格,C没有这么严格。
大家可以比较一下,gcc不会报错,g++会报错。
如果大家还有新的case,欢迎补充。 ......

C++完全兼容C的语法吗?

对于C编写程序,大部分都可以通过,但是不会完全兼容,举两个例子:
1.
char *str;
str = malloc(32);
2.
char ch[3] = "abc";
gcc  -g  -o test test.c
g++ -g -o test test.c
因为C++检查更加严格,C没有这么严格。
大家可以比较一下,gcc不会报错,g++会报错。
如果大家还有新的case,欢迎补充。 ......

C/C++指针

何为指针 ?
  指针基本上和其它的变量一样,唯一的一点不同就是指针并不包含实际的数据,而是包含了一个指向内存位置的地址,你可以在这个地址找到某些信息。这是一个很重要的概念,并且许多程序或者思想都是将指针作为它们的设计基础,例如链表。
开始
  如何定义一个指针?呃,就像定义其它的变量一样,不过你还需要在变量名之前添加一个星号。例如,下面的代码创建了两个指向整数的指针:
int* pNumberOne;
int* pNumberTwo;
  注意到变量名的前缀“p”了吗?这是编写代码的一个习惯,用来表示这个变量是一个指针。
  现在,让我们把这些指针指向一些实际的值吧:
pNumberOne = &some_number;
pNumberTwo = &some_other_number;
  “&”标志应该读作“the address of(……的地址)”,它的作用是返回一个变量的内存地址,而不是这个变量本身。那么在这个例子中,pNumberOne就是some_number的地址,亦称作pNumberOne指向some_number。
  现在,如果我们想使用some_number的地址的话,那么我们就可以使用pNumberOne了。如果我们希望经由pNumberOne而使用some_number的值的话,我们可以用*pN ......

C/C++指针

何为指针 ?
  指针基本上和其它的变量一样,唯一的一点不同就是指针并不包含实际的数据,而是包含了一个指向内存位置的地址,你可以在这个地址找到某些信息。这是一个很重要的概念,并且许多程序或者思想都是将指针作为它们的设计基础,例如链表。
开始
  如何定义一个指针?呃,就像定义其它的变量一样,不过你还需要在变量名之前添加一个星号。例如,下面的代码创建了两个指向整数的指针:
int* pNumberOne;
int* pNumberTwo;
  注意到变量名的前缀“p”了吗?这是编写代码的一个习惯,用来表示这个变量是一个指针。
  现在,让我们把这些指针指向一些实际的值吧:
pNumberOne = &some_number;
pNumberTwo = &some_other_number;
  “&”标志应该读作“the address of(……的地址)”,它的作用是返回一个变量的内存地址,而不是这个变量本身。那么在这个例子中,pNumberOne就是some_number的地址,亦称作pNumberOne指向some_number。
  现在,如果我们想使用some_number的地址的话,那么我们就可以使用pNumberOne了。如果我们希望经由pNumberOne而使用some_number的值的话,我们可以用*pN ......

Netbeans 下 用MinGW配置C/C++编译环境

今天配置了一下netbeans的c++编译环境,所以写一篇日志备忘,同时也供广大网友参考和学习。
准备资源:
1、netbeans 可以到官方网站下载zh-cn.netbeans.org/
2、MinGW编译器(MinGW中有g++和gcc编译器)点此处下载,可以到我提供的csdn的共享下载,由于大小限制分两部分
地址:第一部分 http://download.csdn.net/source/2252840 
3、MSYS 可以点此下载
4、gdb 可以点此下载
开始
准备好上述材料后,就可以进入安装阶段。
首先,安装netbeans,这个不做过多介绍,就按照安装向导一步一步进行,但注意下载的netbeans版本要包含c/c++插件的。
第二,安装MinGW,下载我提供的MinGW,里面有binutils-2.17.50-20060824-1.tar.gz 、 gcc-core-4.2.1-sjlj-2.tar.gz 、gcc-g++-4.2.1-sjlj-2.tar.gz、mingw32-make-3.81-20080326-2.tar.gz、mingwrt-3.15.1-mingw32.tar.gz、mingwrt-3.15.1-mingw32-dev.tar.gz、mingwrt-3.15.1-mingw32-dll.tar.gz、w32api-3.11.tar.gz 八个文件,将所有文件解压到一个文件夹下,如C:\MinGW下,然后将C:\MinGW\bin添加到路径中 并将C:\MinGW\bin下的g++-sjlj.exe文件复制为g++.exe,将C:\MinGW\bin下的gcc-sjlj.exe复制为gcc.exe 此时, ......

Netbeans 下 用MinGW配置C/C++编译环境

今天配置了一下netbeans的c++编译环境,所以写一篇日志备忘,同时也供广大网友参考和学习。
准备资源:
1、netbeans 可以到官方网站下载zh-cn.netbeans.org/
2、MinGW编译器(MinGW中有g++和gcc编译器)点此处下载,可以到我提供的csdn的共享下载,由于大小限制分两部分
地址:第一部分 http://download.csdn.net/source/2252840 
3、MSYS 可以点此下载
4、gdb 可以点此下载
开始
准备好上述材料后,就可以进入安装阶段。
首先,安装netbeans,这个不做过多介绍,就按照安装向导一步一步进行,但注意下载的netbeans版本要包含c/c++插件的。
第二,安装MinGW,下载我提供的MinGW,里面有binutils-2.17.50-20060824-1.tar.gz 、 gcc-core-4.2.1-sjlj-2.tar.gz 、gcc-g++-4.2.1-sjlj-2.tar.gz、mingw32-make-3.81-20080326-2.tar.gz、mingwrt-3.15.1-mingw32.tar.gz、mingwrt-3.15.1-mingw32-dev.tar.gz、mingwrt-3.15.1-mingw32-dll.tar.gz、w32api-3.11.tar.gz 八个文件,将所有文件解压到一个文件夹下,如C:\MinGW下,然后将C:\MinGW\bin添加到路径中 并将C:\MinGW\bin下的g++-sjlj.exe文件复制为g++.exe,将C:\MinGW\bin下的gcc-sjlj.exe复制为gcc.exe 此时, ......

pro*c编对步骤

step one:将.pc文件预编译为.c
    [ecif@localhost zyctest]$ proc sample1.pc
    显示信息:
    Pro*C/C++: Release 10.2.0.1.0 - Production on Tue Apr 13 14:07:05 2010
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    System default option values taken from: /home/oracle/oracle/product/10.2.0/db_1/precomp/admin /pcscfg.cfg
step two:编译.c文件,生成目标文件
    gcc -L$ORACLE_HOME/precomp/public -I/home/oracle/oracle/product/10.2.0/db_1/precomp   /public/ -c sample1.c
    提示警告:
    sample1.c: In function `main':
    sample1.c:236: warning: return type of 'main' is not `int'
step three:链接目标文件,生成可执行程序
   gcc -L$ORACLE_HOME/lib -lclntsh -o sample1 sample1.o
    警告:
    sample1.o(.text+0x381): In function `main':
    : warning: the `gets' f ......

史上最简单元的pro*c程序

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
EXEC SQL include sqlca;
EXEC ORACLE OPTION (RELEASE_CURSOR = YES);
EXEC SQL BEGIN DECLARE SECTION;
                VARCHAR username[20];
                VARCHAR password[20];
EXEC SQL END DECLARE SECTION;
void sql_error()
{
                EXEC SQL WHENEVER SQLERROR CONTINUE;
                printf("\n Oracle error detected:\n");
                printf("\n%.70s\n ......
总记录数:2015; 总页数:336; 每页6 条; 首页 上一页 [76] [77] [78] [79] 80 [81] [82] [83] [84] [85]  下一页 尾页
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号