C&C++编程

1.#include< >和#include“ ”的区别

#include<>直接从编译器自带的函数库中寻找文件
#include""是先从自定义的文件中找 ,如果找不到再从函数库中寻找文件。如果是自己写的头文件,建议使用#include“”

2.#ifndef

条件指示符#ifndef的主要目的是防止头文件的重复包含和编译
#ifndef 标识1 //
判断"标识1"是否定义,如果被定义则返回假,如果没有被定义则返回真。

代码示例:
/**********************************/
语句1 #ifndef 标识1
语句2 #define 标识1
语句3 #endif
语句4 ……
语句5 ……
该段代码意思是:如果标识1没有被定义,则重定义标识1,即执行语句2、语句3;如果标识1已经被定义,则直接跳过语句2、语句3,直接执行语句4、语句5、……
/***********************************/
备注:#ifndef 和 #endif 要一起使用,如果丢失#endif,可能会报错。
需要注意的是,#ifndef起到的效果是 防止一个源文件两次包含同一个头文件,而不是防止两个源文件包含同一个头文件。网事实上,防止同一头文件被两个不同的源文件包含这种要求本身就是不合理的,头文件存在的价值就是被不同的源文件包含。
假如你有一个C源文件,它包含了多个头文件,比如头文件A和头文件B,而头文件B又包含了头文件A,则最终的效果是,该源文件包含了两次头文件A。如果你在头文件A里定义了结构体或者类类型(这是最常见的情况),那么问题来了,编译时会报大量的重复定义错误。
例如要编写头文件test.h,在头文件开头写上两行:
#ifndef _TEST_H
#define _TEST_H //一般是文件名的大写
头文件结尾写上一行:
#endif
这样一个工程文件里同时包含两个test.h时,就不会出现重定义的错误了。
分析:
当第一次包含test.h时,由于没有定义_TEST_H,条件为真,这样就会包含(执行)#ifndef _TEST_H和#endif之间的代码,当第二次包含test.h时前面一次已经定义了_TEST_H,条件为假,#ifndef _TEST_H和#endif之间的代码也就不会再次被包含,这样就避免了重定义了。

<标识>在理论上来说可以是自由命名的,但每个头文件的这个“标识”都应该是唯有的。标识的命名规则一般是头文件名全大写,前面加下划线,并把文件名中的“.”也变成下划线,如:stdio.h
#ifndef _STDIO_H
#define _STDIO_H

#endif

3.pragma

在所有的预处理指令中,#pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。

具体:#pragma命令详解.

#pragma once只要在头文件的最开始加入这条指令就能够保证头文件被编译一次。
#pragma comment ( lib,“xxx.lib” )
表示链接xxx.lib这个库,告诉编译器你要用到xxx.lib库。和在工程设置里写上链入xxx.lib的效果一样,不过这种方法写的 程序别人在使用你的代码的时候就不用再设置工程settings了。

为什么OpenGL中要用GLfloat而不用float,两者有什么区别?

glew.h中有typedef float GLfloat;
typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。

为什么OpenGL中要用GLfloat而不用float,两者有什么区别?
int,float 和 GLint,GLfloat 它们是一样的。
但是用 float ,编译器不同,内存大小可能设为32 or 64 位的,用GLfloat 就不会出现这种问题。

c++中->和.的用法

->是指针指向其成员的运算符 .是结构体的成员运算符。最大的区别是->前面放的是指针,而.前面跟的是结构体变量。

“return ;” 是什么意思?

函数在return出返回,表示跳出了这个函数,这个函数后面有语句也不执行了,到此结束,返回到上一层了
。举个例子
private void addByType(){
int a=1;
if(a>0){
a=1;
return;//函数在此结束,直接跳出函数,后面的代码都不执行了
}
a+=10;//不执行
}
函数执行完a=1.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值