标签: header-files

#include <filename>和#include"filename"有什么区别?

在C和C++编程语言中,使用尖括号和在include语句中使用引号有什么区别,如下所示?

  1. #include <filename>
  2. #include "filename"

c c++ include header-files c-preprocessor

2204
推荐指数
27
解决办法
55万
查看次数

464
推荐指数
8
解决办法
27万
查看次数

#pragma曾经是C++ 11标准的一部分吗?

传统上,避免C++中多个头部包含的标准和可移植方法是使用#ifndef - #define - #endif预编译器指令方案,也称为宏保护方案(参见下面的代码片段).

#ifndef MY_HEADER_HPP
#define MY_HEADER_HPP
...
#endif
Run Code Online (Sandbox Code Playgroud)

然而,在大多数实现/编译器中(见下图),有一个更"优雅"的替代方案,其功能与调用的宏保护方案相同#pragma once.#pragma once与宏保护方案相比具有几个优点,包括更少的代码,避免名称冲突,有时提高编译速度.

在此输入图像描述

做了一些研究,我意识到尽管#pragma once几乎所有已知的编译器都支持指令,但是指令是否#pragma once是C++ 11标准的一部分还是存在紊乱.

问题:

  • 有人可以澄清#pragma once指令是否属于C++ 11标准的一部分吗?
  • 如果它不是C++ 11标准的一部分,是否有计划将其包含在以后的版本中(例如,C++ 14或更高版本)?
  • 如果有人可以进一步详细说明使用这些技术中的任何一种(即,宏观防护对比#pragma once)的优点/缺点,那也是很好的.

c++ macros header-files c++11 c++14

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

为什么我不应该包含cpp文件而是使用标题?

所以我完成了我的第一个C++编程任务,并获得了我的成绩.但根据评分,我失去了分数including cpp files instead of compiling and linking them.我不清楚这意味着什么.

回顾一下我的代码,我选择不为我的类创建头文件,但是在cpp文件中做了所有事情(它看起来没有头文件......).我猜这个评分者意味着我写了'#include'mycppfile.cpp";' 在我的一些文件中.

#include对cpp文件的推理是: - 应该进入头文件的所有东西都在我的cpp文件中,所以我假装它就像一个头文件 - 在猴子看猴子做时尚,我看到了其他头文件#include在文件中是'd,所以我为我的cpp文件做了同样的事情.

那究竟是我做错了什么,为什么不好呢?

c++ header-files

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

x86 SIMD内在函数的头文件

哪些头文件为不同的x86 SIMD指令集扩展(MMX,SSE,AVX,...)提供内在函数?似乎不可能在网上找到这样的清单.如我错了请纠正我.

x86 sse simd header-files intrinsics

121
推荐指数
5
解决办法
5万
查看次数

c ++标题中的"using namespace"

在我们所有的C++课程,所有的老师总是把using namespace std;在之后#include在它们的S .h文件.从那时起,我觉得这很危险,因为在另一个程序中包含该标题我会将命名空间导入到我的程序中,可能没有意识到,打算或想要它(标题包含可以非常深入嵌套).

所以我的问题是双重的:我是对的,using namespace不应该在头文件中使用,和/或是否有某种方法来撤消它,例如:

//header.h
using namespace std {
.
.
.
}
Run Code Online (Sandbox Code Playgroud)

还有一个问题是:标题文件是否应该是#include相应.cpp文件所需的所有标题,只有那些标题定义所需的标题,并让.cpp文件#include为其余标题,或者没有,并声明它需要的所有内容extern
问题背后的原因与上面相同:在包含.h文件时我不想要惊喜.

另外,如果我是对的,这是一个常见的错误吗?我的意思是在现实世界的编程和"真正的"项目中.

谢谢.

c++ namespaces header-files

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

什么应该进入.h文件?

将代码分成多个文件时,究竟应该将哪些内容放入.h文件以及应该放入.cpp文件中的内容?

c++ header-files

90
推荐指数
5
解决办法
8万
查看次数

Makefile,头依赖项

假设我有一个带有规则的makefile

%.o: %.c
 gcc -Wall -Iinclude ...
Run Code Online (Sandbox Code Playgroud)

我想要在头文件更改时重建*.o.无论何时/include更改任何头文件,都必须重建dir中的所有对象,而不是计算出依赖项列表.

我想不出一个改变规则以适应这个的好方法,我愿意接受建议.如果标题列表不必硬编码,则奖励积分

dependencies makefile header-files

90
推荐指数
5
解决办法
10万
查看次数

.h和.m文件中的@interface定义之间的区别

通常我们使用

@interface interface_name : parent_class <delegates>
{
......
}
@end 
Run Code Online (Sandbox Code Playgroud)

在.h文件和.m文件中的方法中,我们合成了在.h文件中声明的变量的属性.

但是在某些代码中,这个@interface ..... @ end方法也保存在.m文件中.这是什么意思?他们之间有什么区别?

还要提供一些关于.m文件中定义的接口文件的getter和setter的话.

提前致谢

getter setter interface objective-c header-files

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

C++:命名空间 - 如何正确使用头文件和源文件?

考虑一对两个源文件:接口声明文件(*.h*.hpp)及其实现文件(*.cpp).

*.h文件如下所示:

namespace MyNamespace {
  class MyClass {
  public:
    int foo();
  };
}
Run Code Online (Sandbox Code Playgroud)

我在源文件中看到了两种不同的使用命名空间的做法:

*.cpp 练习#1:

#include "MyClass.h"
using namespace MyNamespace;

int MyClass::foo() { ... }
Run Code Online (Sandbox Code Playgroud)

*.cpp 练习#2:

#include "MyClass.h"
namespace MyNamespace {

  int MyClass::foo() { ... }

}
Run Code Online (Sandbox Code Playgroud)

我的问题:这两种做法之间是否有任何差异,哪一种被认为比另一种更好?

c++ namespaces header-files

75
推荐指数
4
解决办法
5万
查看次数