标签: header-files

如何包含字符串标题?

我正在尝试了解strings,但不同的来源告诉我要包含不同的标题.

有人说使用<string.h>,但其他人提到"apstring.h".我能够做一些基本的东西apstring,但我被告知另一个更强大.但是当我包含<string.h>并尝试声明一些字符串变量时,我会收到错误.适当的用法是什么?

c++ string header-files

31
推荐指数
4
解决办法
21万
查看次数

C++中的标题保护程序

在LearnCpp.com上| 1.10 - 首先看一下预处理器.在Header guards下,有一些代码片段:

add.h:

#include "mymath.h"
int add(int x, int y);
Run Code Online (Sandbox Code Playgroud)

subtract.h:

#include "mymath.h"
int subtract(int x, int y);
Run Code Online (Sandbox Code Playgroud)

main.cpp中:

#include "add.h"
#include "subtract.h"
Run Code Online (Sandbox Code Playgroud)

在实施头部防护时,提到如下:

#ifndef ADD_H
#define ADD_H

// your declarations here

#endif
Run Code Online (Sandbox Code Playgroud)
  • 宣言可以在这里发生什么?而且,应该int main()来#endif吗?
  • 是添加_H约定还是必须做的事情?

谢谢.

c c++ macros include-guards header-files

30
推荐指数
3
解决办法
7万
查看次数

cuda.h,cuda_runtime.h,cuda_runtime_api.h之间的区别

我开始使用CUDA进行编程,在某些示例中,我找到了包含文件cuda.h,cuda_runtime.h并cuda_runtime_api.h包含在代码中.有人可以向我解释这些文件之间的区别吗?

cuda header-files

30
推荐指数
2
解决办法
2万
查看次数

Visual Studio 2010(任何版本)的安装仅在C++头文件目录中安装2个文件

我在Windows 7工作站上安装了Visual Studio 2010 Premium.加载测试C++项目后,我注意到它找不到iostream.我看了一下C:\ Program Files(x86)\ Microsoft Visual Studio 10.0\VC\include,注意到这里只存在两个文件,srv.h和wmiatlprov.h

我在测试虚拟机上安装了VS2010产品,这个目录(...\VC\include)中填充了通常的文件夹和标题集(您希望在包含目录中找到的材料).

我已采取以下步骤来纠正问题工作站上缺少的标头:

  • 已验证我没有活动的A/V软件(我正在使用MS Security Essentials,实时已禁用)
  • 已卸载Visual Studio 2010 Premium以及"程序和功能"中的所有其他子产品
  • 使用/ full和/ netfx参数运行VS2010卸载工具
  • 从程序文件和程序文件(x86)中删除Visual Studio 10.0目录
  • 从MSDN上新下载的ISO重新安装Visual Studio 2010.

我也完成了上述步骤,但使用了不同版本的重新安装VS2010 Professional.

到目前为止,上述任何内容都无法生成已安装的Visual Studio 2010产品,并且我的工作站上安装了所有C++标头.

想法?

installation windows-installer header-files visual-studio-2010 visual-c++

30
推荐指数
2
解决办法
1万
查看次数

在头文件与实现(.cpp)文件中定义构造函数

我可以在类.h文件或实现文件.cpp中定义类构造函数的主体.就编译器在特定项目中而言,这两种样式可能是相同的(项目对我来说意味着DLL).同样适用于任何成员函数:它们可以在头文件中定义,也可以在那里声明,然后在cpp文件中定义.

但是,我发现,如果我需要包括在不同的项目,例如类的头文件(一个或多个)(这意味着最终使用该头文件中的代码不同的最终DLL),则具有在头文件中的实际的实现会导致一些头痛在编译时(不是在链接...我甚至没有达到这一点).为什么?好吧,我不会详细说明,但编译器显然试图解决其他头文件等中可能定义的所有函数,迫使可怜的开发人员开始引入各种头文件等.

是不是总是最好保持头文件没有任何实现,只是将它们用于'声明'?这样可以更容易地将它们包含在多个项目中,而不必携带大量额外的垃圾.

你对此有何看法?

c++ constructor header-files

29
推荐指数
2
解决办法
6万
查看次数

包含在头文件与前向声明中,并包含在.cpp中

我有一个B类,我想把成员称为A类.所以:

1.

//A.h    
class B; 
class A 
{ 
private:
    B* m_p; 
}; 

//a.cpp
#include "B.h"
Run Code Online (Sandbox Code Playgroud)

2.

// A.h
#include "B.h"

class A 
{ 
private: 
    B * impl_; 
}; 
Run Code Online (Sandbox Code Playgroud)

当一个没有太多依赖性的小项目涉及时,这两种方式是否更好?

c++ header-files

29
推荐指数
3
解决办法
2万
查看次数

xCode 4.4没有获得所有.pch文件头导入?

这是我的.pch文件 -

   //
// Prefix header for all source files of the 'English Club' target in the 'English Club' project
//

#import <Availability.h>

#ifndef __IPHONE_4_0
#warning "This project uses features only available in iOS SDK 4.0 and later."
#endif

#ifdef __OBJC__
    #import <UIKit/UIKit.h>
    #import <Foundation/Foundation.h>
    #import <CoreData/CoreData.h>
    #import "Helper.h"
    #import "Animations.h"
    #import "Constants.h"
    #import "SoundPlayer.h"
    #import "UAirship.h"
    #import "UAStoreFront.h"
    #import "UIIMagesNames.h"
    #import "UIView+Sizes.h"
    #import "HelpButton.h"
    #import "SoundPlayer.h"
    #import <RestKit/RestKit.h>
    #import "UIHelpSoundFiles.h"


#endif
Run Code Online (Sandbox Code Playgroud)

仍然很常见,Xcode会给我错误,他找不到那些类.(例如帮助者).问题是该项目将被编译并且工作正常,但是我有数百个错误,这些错误会扰乱我寻找真实的错误.

知道为什么吗?

objective-c header-files precompiled-headers

28
推荐指数
2
解决办法
8287
查看次数

什么是WINVER?

我正在查看一些代码,他们有这一行:#define WINVER 0x0501在stdafx.h文件中?你为什么需要定义WINVER?它如何影响您的代码?有人可以解释一下吗?

c++ windows header header-files

27
推荐指数
1
解决办法
3万
查看次数

为什么首先包含相关标题?

关于C/C++包含文件顺序/最佳实践的问题,最佳答案建议首先包含相关标题.

同为谷歌和Mozilla的风格指南.

但是,在这两种情况下,我找不到你为什么要这样做的充分理由.

Google和Mozilla编码规则对我来说最合适,因为它们会强制您首先包含最"标准"的标头.

这样,我认为你不太可能弄乱包含的文件(例如通过取消定义其他标题中使用的一些宏等),这看起来像是最适合我的方式.

但是根据这个理由,为什么要首先包含相关的标题?由于它中的任何语法错误可能会弄乱以下所有标题?

我认为包括最后的相关标题将是最好的.

c++ header-files

27
推荐指数
2
解决办法
2444
查看次数

头文件只包含在整个程序中一次?

我知道这是一个常见问题,但我仍然无法完全理解它.

在从多个不同的源文件和头文件生成的C或C++程序中,当使用标题保护时,每个头文件是否只包含在整个代码中一次?

之前有人告诉我,头文件(带有包含警卫)只能在一个翻译单元中包含一次,但在整个代码中会多次包含.这是真的?

如果它在整个代码中只被包含一次,当一个文件希望包含它并且预处理器检测到它已经被包含时,那个希望使用它的文件如何知道它之前包含的代码中的位置?

c c++ header-files c-preprocessor

26
推荐指数
4
解决办法
9007
查看次数