-
怎样防止头文件被重复引用
2017-08-19 22:45:20方式一:条件编译:#ifndef #define......//一些声明...但是,如果宏名称相同,就会明明你包含了头文件,却找不到源文件。条件编译的有点事,跨平台效果好。 例://file1h #define __BOOK_H_现在有另外一个file2.bo方式一:条件编译:
#ifndef #define ......//一些声明语句 #endif
这种方式依赖于宏名称不能冲突,而且这种方式可以保证同一个文件不被包含多次,也能保证内容完全相同的两个文件不会不小心同时包含。但是,如果宏名称相同,就会明明你包含了头文件,却找不到源文件。条件编译的有点事,跨平台效果好。
例://file1h #define __BOOK_H_
现在有另外一个file2.book.h
#ifnedf _BOOK_H__ #define _BOOK_H__ //program #endif // _BOOK_H__
在你的主函数里包含了该文件:
#include "file1.h” #include"book.h"
预编译阶段,把file1里的宏展开,就得到了一个BOOK_H_的宏,这个时候就不会在包含book.h这个头文件了
方式二:#pragma once
这种方式又叫c和c++杂注,优点是,简单,没有宏定义冲突的情况,但是不跨平台,而且如果两个内容完全相同的文件被包含,不会报错。 -
怎样引用没有头文件的其他CLR dll?
2016-01-01 16:53:35如果是C#就方便多了[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/13.gif][/img] ...CLR的话,第一我不知道怎么把dll文件的路径“告诉”VS,第二不知道怎么引用。 新手求教。 -
VC2010中怎样添加头文件路径(外来的头文件)还有lib库
2014-11-16 22:56:33比如放在引用它们的文件的同目录,这时用双引号包含头文件;放在其他位置,用双引号包含头文件,双引号内写全路径或对当前文件的相对路径(支持两个点表示父目录),在项目属性include中添加包含路径后可编译器查找头文件的顺序是
(1)源文件(.c或.cpp)所在目录(2)属性->C/C++ ->常规->附加包含目录(3)属性->VC++目录->包含目录如果你常使用它们,扔进你的VC库Microsoft Visual Studio 10.0\VC\include和lib。在项目中用尖括号包含头文件。 如果你仅在某一项目中使用它们,把它们放在项目相关目录。比如放在引用它们的文件的同目录,这时用双引号包含头文件;放在其他位置,用双引号包含头文件,双引号内写全路径或对当前文件的相对路径(支持两个点表示父目录),在项目属性include中添加包含路径后可用尖括号包含头文件名。 包含之后,在代码中添加#pragma comment(lib,"Your lib file"),引号中填入lib文件全路径或相对路径,项目属性中lib目录设置好的话可以直接填文件名。或在项目属性中添加lib文件到link选项中,此时不必写#pragma代码。
搜索头文件的路径,如果用“”双引号括起来,则从当前目录,而后在系统目录搜索,VC中为 VC98\Include ,VS中为
Microsoft Visual Studio 10.0\VC\include 。如果用<>括起来,则直接从系统目录搜索。
设置方法VC中在具体点菜单中的Tools->Options->Directories 也可以设置lib的目录。
在VS2010中设置方法为属性->VC++目录->包含目录 或者属性->C/C++ ->常规->附加包含目录
H文件目录:依次点击“项目——XX 属性——C/C++——常规”,在“附加包含目录”中加入H文件所在的文件夹LIB目录:依次点击“项目——XX 属性——链接器——常规”,在“附加库目录”中加入LIB所在目录还没完,在“链接器”中找到“输入”,在“附加依赖项”中加入abc.lib或用#pragma comment(lib,"abc.lib")dll文件的搜索路径1、程序的执行目录2、当前目录3、系统目录 system,system32,windows4,path环境变量中所列出的路径dll文件的搜索路径和CreateProcess搜索可执行模块的顺序是一样的lib文件的搜索路径 和头文件的搜索是一样的 原因在于lib和头文件都是起说明作用,而DLL文件可以动态加载,所以路径比较多的。 -
第十三天C进阶:编写头文件,引用其他函数;预定义的宏;宏的好处
2019-09-14 11:20:571.怎样编写头文件,调用另一个源文件里面的函数 以个人具体程序为例 1.先在头文件里面新建一个calender.h。里面具体内容如下 #ifndef WAIT #define WAIT/*这两个WAIT的名字随便改都行*/ /* *等待x毫秒 */ int wait...前提:A1.c和A2.c都在同一个project’里面
C 语言中 include <> 与include “” 的区别?#include < > 引用的是编译器的类库路径里面的头文件。
#include " " 引用的是你程序目录的相对路径中的头文件,如果在程序目录没有找到引用的头文件则到编译器的类库路径的目录下找该头文件。
1.怎样编写头文件,调用另一个源文件里面的函数
以个人具体程序为例
1.先在头文件里面新建一个calender.h。里面具体内容如下#ifndef WAIT #define WAIT/*这两个WAIT的名字随便改都行*/ /* *等待x毫秒 */ int wait(unsigned long x) { clock_t c1 = clock(), c2; /*声明存储时间的clock_t类型变量c1,c2,其中c1已赋值当前的时间*/ do { if ((c2 = clock()) == (clock_t)-1) /*每次循环给c2赋值当前的时间,并与强制转换类型的-1进行比较*/ return 0; /*若clock返回错误的值-1,程序就会返回0表明发生了错误*/ } while (1000.0*(c2 - c1) / 1000 < x); return 1; /*程序正常退出*/ } #endif // !CALENDER
2.在其他源文件里面这样使用。自己定义的头文件一定要用双引号!
#include<time.h> #include<stdio.h> #include<stdlib.h> #include "calender.h"/*一定不能忘记include*/ 。。。 /此时函数不用在该c文件里面再次声明*/ 。。。 wait(1000);/*直接使用*/
2.C里面那些预定义的宏
宏
DATE 当前日期,一个以 “MMM DD YYYY” 格式表示的字符常量。
TIME 当前时间,一个以 “HH:MM:SS” 格式表示的字符常量。
FILE 这会包含当前文件名,一个字符串常量。
LINE 这会包含当前行号,一个十进制常量。
STDC 当编译器以 ANSI 标准编译时,则定义为 1。
例如:#include <stdio.h> main() { printf("File :%s\n", __FILE__ ); printf("Date :%s\n", __DATE__ ); printf("Time :%s\n", __TIME__ ); printf("Line :%d\n", __LINE__ ); printf("ANSI :%d\n", __STDC__ ); }
结果是
File :test.c
Date :Jun 2 2012
Time :03:36:24
Line :8
ANSI :13.宏的好处
省去形参和调用函数。如果函数只有一行,那就可以改写成宏节约空间。
-
头文件的使用
2004-09-30 11:59:00当几个类在不同文件定义的时候,该怎样使用定义好的类?开始的时候,我是把每个...在使用的时候,要引用该头文件。我作了个demo,如下:假设该demo有两个类:A,B,分别定义在ClassA.cpp和ClassB.cpp中,还有一个main.c当几个类在不同文件定义的时候,该怎样使用定义好的类?
开始的时候,我是把每个类的定义和实现放在不同的文件,
然后在使用该类的地方直接使用的,结果是可想而知的,很
多错误。后来就问同事,同事说要把类的声明放在一个头文
件中,然后再在类文件中实现它。在使用的时候,要引用该
头文件。我作了个demo,如下:
假设该demo有两个类:A,B,分别定义在ClassA.cpp和ClassB.cpp
中,还有一个main.cpp,用来调用A,B这两个类,一个myHeader.h,
来存放A和B的声明。源代码如下:
1.myHeader.h:
class A
{
public:
A(){}
void print();
};
class B
{
public:
B(){}
void print();
};
2.ClassA.cpp
#include <iostream.h>
#include "myHeader.h"
void A::print()
{
cout<<"I am new object of class A!"<<endl;
}
3.ClassB.cpp
#include <iostream.h>
#include "myHeader.h"
void B::print()
{
cout<<"I am new object of class B!"<<endl;
}
4.main.cpp
#include "myHeader.h"
main()
{
A *a=new A();
B *b=new B();
a->print();
b->print();
return 0;
}
执行结果如下: -
头文件没有一个全球性的定义
2015-10-24 08:03:00//因为一个头文件可以包括多次。因此,在全球范围内的情况下定义。该链接将出现重新定义错误 //全局定义不应该被放置在... 怎样一个头文件要引用一个其它文件中已经定义的全局量,则应用extern #ifndef LOC... -
在mdf一个例子中引入其他功能头文件 一直报错
2020-12-29 13:43:52引用的头文件里的函数undefined,所以我去mdf的components目录里找到对于的c文件拷贝到mwif下的main目录了。编译的时候又报错误 <p>`In file included from C:/msys32/home/Administrator/esp/esp-mdf/... -
C语言怎样产生一定范围的随机数
2018-06-29 15:51:05C语言的获取随机数的函数为rand(), 可以获得一个非负整数的随机数。要调用rand需要引用头文件stdlib.h。 -
C语言 怎样产生随机数
2018-12-06 20:01:58引用百度百科,首先,需要包含头文件: #include <stdlib.h> rand()函数是按指定的顺序来产生整数,因此每次执行上面的语句都打印相同的两个值,所以说C语言的随机并不是真正意义上的随机,有时候也... -
win32程序中引用CString
2016-02-19 10:34:29一般dll程序会选择win32程序,在这些程序中怎样使用CString呢? 1.修改运行时设置: 2:添加头文件 #include 或者#include 3.删除_userdll设置 -
怎样在DELPHI中使用API函数
2015-12-02 17:19:32DELPHI中将C或C++中引用 的WINDOWS.H头文件改写为WINDOWS.PAS单元,使WINDOWS API函数的定义符合PASCAL语法。而其他的头文件在DELPHI中也都有相应的.PAS单元一一对应,所以在DELPHI中调用API函数时,只须将相应的API... -
C编译器编译过的函数怎样在C++中使用
2014-06-22 13:20:1315.在C++ 程序中调用被C 编译器编译后的函数,为什么要...通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。例如,如果模块B欲引用该模块A中定义的全局变量和函数时只需包含模块A -
在vc++中,资源和类有怎样的关系?
2015-05-15 09:03:44在整个工程中,任何地方都可以通过指针、类对象声明、资源ID号、使用头文件、引用宏、使用资源序号、调用动态库文件等方式,来使用这些资源。 对话框资源,要使用可以为其添加对话框类,但它本质上的意义,并不是说... -
VC中怎样使用自定义资源的动态库
2008-09-19 21:31:00VC6.0的资源编辑器目前只支持位图,有什么办法使用其他格式的图片呢?... 步骤:创建工程MyPrj,创建动态库rs.dll,共用一个RC文件,引用同一个resource.h头文件;在动态库rs.dll的resource中Impor -
2021年C语言面试题及答案.doc
2020-11-10 00:23:051局部变量能否和全局变量重名? 答能局部会屏蔽全局要用全局变量需要使用" 局部变量能够和全局变量同名在函数内引用这个变量时会用到同名局部变量而不会... 答extern 能够用引用头文件方法也能够用extern关键字假如用引 -
CUDA动态二维数组在核函数中应该如何引用?
2020-10-05 13:45:00(1)头文件head_file.cuh ``` #include "cuda_runtime.h" #include "device_launch_parameters.h" #include using namespace std; //==========================复数类型========================... -
为什么外部中断0加延时函数去抖动后要将中断请求标志IE0置零,不置零会怎样
2019-04-21 22:40:53//-----头文件引用----- #include #include #include sbit led7 = P1^7; sbit led8 = P1^6; //sbit key17 = P3^2; //sbit key18 = P3^3; bit intflag0; bit intflag1; //-----延时子程序--... -
iOS获取当前位置经纬度
2015-01-12 14:37:06最近在做一个公交车查询的项目...引用头文件并声明CLLocationManagerDelegate代理: 接下来声明要用到的变量: 在viewDidLoad中判断用户是否启用定位服务,第一次进入应用时系统会提示是否启用定位操作。然后开始定位 -
是不是每定义一个新类都要进行输出运算符重载?实在不知道该怎样理解“增加对类类型数据的支持”这句话
2020-09-23 17:58:30#include <iostream> //引用输入输出流库函数的头文件 using namespace std; ///////////////////////////////////// //// 功能3. 增加对类类型的支持 //// class B { public: B(int i = 0) :data(i) {}... -
小规则让你写出漂亮又高效的程序(仅供自己日常反省用)
2017-06-06 13:28:43一、写出漂亮易读的程序 怎样才算漂亮的代码,怎样才算丑的代码?下面给出一些小规则: ...【1】头文件用来声明,cpp文件用来定义。声明和定义分开,不但可以让...【2】为了防止头文件被重复引用,应当用 ifnd -
vscode查看代码编译时间_【程序员进阶】如何才能减少 C++ 代码编译时间的方法!...
2021-01-25 00:40:18C++的代码包含头文件和实现文件两部分,头文件一般是提供给别人使用的,但是一旦头文件发生改变,不管多小的变化,所有引用他的文件就必须重新编译,编译就要花时间。假如你做的工程比较大(比如二次封装chrome这类的... -
makefile的编写
2021-01-06 08:11:27先转载个别人的例子,自己有时间亲自去编写下。看可以看的懂,但是最后怎样写呢?...include目录存放一个head.h头文件,是我们src中所有cpp文件都要引用的头文件。 这四个cpp文件就是实现加减乘除的功能。
-
L2-032 彩虹瓶 (25 分)【Python】
-
AndroidGC原理探究UI
-
advanced_176170.rar
-
Oracle10g出现Enterprise Manager 无法连接到数据库实例解决办法
-
FTP 文件传输服务
-
用微服务spring cloud架构打造物联网云平台
-
简单交流液晶光阀
-
在苹果Mac上如何管理iCloud储存空间?
-
FastDFS 分布式文件系统部署
-
CSP认证-201409-1-相邻数对
-
chivier.github.io-源码
-
关于Python未来发展简介.mp4
-
Python启蒙到架构师的核心技术精讲课程
-
NFS 网络文件系统
-
PyTorch入门到进阶 实战计算机视觉与自然语言处理项目
-
创建云存储系统文件目录的隐私保护方法
-
spring_jpa接口命名规则
-
2021-02-25
-
吾爱软件加壳脱壳工具箱.exe
-
charimg.rar