header-files相关内容
我知道在头文件中使用包含保护是为了防止某些东西被定义两次.不过,使用此代码示例完全没问题: foo.c #include #include #include "bar.h"int main() {printf("%d", strlen("测试字符串"));somefunc("一些测试字符串...");返回0;} bar.h #ifndef BAR_
..
传统上,避免在 C++ 中包含多个标头的标准和可移植方法是使用 #ifndef - #define - #endif预编译器指令方案,也称为 宏守卫方案(见下面的代码片段). #ifndef MY_HEADER_HPP#define MY_HEADER_HPP...#万一 然而,在大多数实现/编译器(见下图)中,有一个更“优雅"的替代方案,其用途与称为 #pragma once.#pragma
..
我有一个关于 C 中包含守卫的问题.我已经阅读了一些内容,但希望能得到一些澄清. 假设我有一个带有函数定义的头文件“header.h". #ifndef HEADER_FILE#define HEADER_FILE诠释二(无效){返回 2;}#万一 这个头文件有一个包含保护.但是,我对#define HEADER_FILE 实际上在做什么感到困惑.假设我要忘记包含保护,完全忽略添加“#d
..
在 LearnCpp.com |1.10 — 预处理器初探.在 Header guards 下,有这些代码片段: 添加.h: #include "mymath.h"int add(int x, int y); 减去.h: #include "mymath.h"整数减法(整数 x,整数 y); main.cpp: #include "add.h"#include “减法.h" 在实
..
我知道之前有人问过与此类似的问题,但经过研究后,我仍然对循环标题包含有疑问. //FooA.h#ifndef H_FOOA#define H_FOOA#include "foob.h"类FooA{上市:FooB *fooB;};//FooB.h#ifndef H_FOOB#define H_FOOBFooA 类;类FooB{上市:富阿*富阿;}; 现在,如果我有两个循环依赖项,这就是我在 st
..
我有一个 C++ 程序 (.cpp),我希望在其中使用 C 头文件中的一些函数,例如 stdio.h、conio.h、stdlib.h、graphics.h、设备.h等 我可以在我的 cpp 文件中包含 stdio.h 库:#include .如何包含其他库文件? 如何添加 graphics.h 库? 我使用的是 Microsoft Visual Studio 6
..
有没有什么方法可以不必编写两次函数声明(头文件),并且在使用 C++ 编程时仍然保持相同的编译可伸缩性、调试的清晰度和设计的灵活性? 解决方案 使用Lzz.它需要一个文件并自动为您创建一个 .h 和 .cpp,所有声明/定义都在正确的位置. Lzz 确实非常强大,可以处理 99% 的完整 C++ 语法,包括模板、特化等. 更新 150120: 较新的 C++ '11/14
..
这段代码怎么来的 std::map 米;m["a"]=1; 编译(我使用的是 MSVC 2010) #include 但没有 #include ? 解决方案 包含旧函数,如 strcpy、strlen 用于 C 风格的空终止字符串. 主要包含std::strin
..
我不确定我是否正确地问了这个问题,但让我解释一下. 首先,我阅读了这篇解释声明和定义之间区别的文章:http://www.cprogramming.com/declare_vs_define.html 其次,我从之前的研究中知道,在头文件中定义变量和函数是不好的做法,因为在链接阶段,您可能有多个同名定义,这会引发错误. 但是,为什么课程不会发生这种情况?根据另一个SO答案(定义和
..
好的,直到今天早上我都对这些术语感到困惑.我想我已经有所不同了,希望如此. 首先,令人困惑的是,由于预处理器已经将头文件包含在包含函数的代码中,链接器将哪些库函数链接到汇编器/编译器生成的目标文件?部分混淆主要是由于我对头文件和库之间的区别一无所知. 经过一番谷歌搜索和堆栈溢出(这是术语吗?:p),我收集到头文件主要包含函数声明,而实际实现在另一个名为库的二进制文件中(我仍然不是 10
..
我在 MSDN 或其他地方找不到任何内容,但是是否有硬编码限制标头包含的嵌套深度?示例: //H1.h//守卫等#include "H2.h"//H2.h//守卫等#include "H3.h"//...//HN.h
..
哪些头文件为不同的 x86 SIMD 指令集扩展(MMX、SSE、AVX 等)提供了内在函数?在网上找不到这样的列表似乎是不可能的.如果我错了,请纠正我. 解决方案 现在你通常应该只包含 .它包括一切. GCC 和 clang 将阻止您将内部函数用于编译时未启用的指令(例如使用 -march=native 或 -mavx2 -mbmi2 -mpopcnt -mfma -mcx16-m
..
我已经编写了一个 Makefile 来在 OSX 上编译一个 openCV 程序(在 Unix 系统中更通用). 代码有一个名为 constants.hpp 的头文件,其中定义了一些常量. 当这个头文件改变时,我想让 Makefile 重新编译程序,因为其中的常量值改变了程序的行为. 我的 Makefile 如下 CPP = g++CPPFLAGS = -std=c++11全部
..
我已经仔细阅读了可能的重复项,但是没有一个答案会被理解. tl;dr:C 中的源文件和头文件有何关联?项目是否在构建时隐式地整理声明/定义依赖项? 我试图理解编译器如何理解.c 和.h 文件之间的关系. 给定这些文件: header.h: int returnSeven(void); source.c: int returnSeven(void){返回7;} ma
..
这可能是一个愚蠢的问题,但我已经在这里和网上搜索了很长时间,但找不到明确的答案(我的尽职调查谷歌搜索). 所以我是编程新手...我的问题是,main 函数如何知道不同文件中的函数定义(实现)? 例如.假设我有 3 个文件 main.cpp myfunction.cpp myfunction.hpp //main.cpp#include "myfunction.hpp"i
..
我有一个项目(一个库),它被细分为几个包含代码的目录.我想让 g++ 在项目的根目录中搜索头文件,这样我就可以避免多个源文件中相同头文件的不同包含路径. 主要是root/目录下有子目录A/、B/和C/,所有这些里面都有 .hpp 和 .cpp 文件.如果 A 中的某个源文件想要包含在 B 中的 file.hpp,则必须这样做: #include "../B/file.hpp".对于另一个 C
..
我注意到,如果我在头文件中的某些位置放置某些声明,则会出现编译错误.我已经在代码中添加了关于我认为某些事情发生的地方的评论;他们说得对吗? @interface Level : CCNode {//实例变量?PlayBackgroundLayer* playBGLayer;PlayUILayer* playUILayer;播放元素层* 播放元素层;}//静态方法?+(void) InitLeve
..
每当我编译我的程序时,都会出现上述错误. 解决方案 如果您遇到这样的问题,首先将您的 TC 文件夹放入 C:... 驱动器.安装完成后打开turbo c蓝屏.有一个 OPTIONS >目录 ..在其中您可以看到设置路径的选项.. 包含目录..你现在可以在那里设置路径.. C:\TC\INCUDE 库目录..你可以在那里设置路径...C:\TC\LIB 如果您想将输出存储在 BIN
..
通常我们使用 @interface interface_name : parent_class {......}@结尾 .h 文件和 .m 文件中的方法我们综合了 .h 文件中声明的变量的属性. 但在某些代码中,这个@interface.....@end 方法也保存在 .m 文件中.这是什么意思?它们有什么区别? 另外给出一些关于.m文件中定义的接口文件的getter和setter
..
我可以在类 .h 文件或实现文件 .cpp 中定义类构造函数的主体.就特定项目中的编译器而言,这两种风格可能是相同的(项目对我来说意味着 DLL).这同样适用于任何成员函数:它们可以在头文件中定义,也可以在头文件中声明,然后在 cpp 文件中定义. 然而,我发现如果我需要在不同的项目中包含这样的类头文件(意味着最终使用头文件的代码最终在不同的 DLL 中)然后有头文件中的实际实现在编译时引起
..