Tag: 标头

如何在c中读取TIFF文件头?

我如何在c中读取tiff文件头? 实际上我想学习TIFF Tag ImageWidth和TIFF Tag ImageLength。 我怎样才能访问这个属性? http://www.awaresystems.be/imaging/tiff/tifftags/imagewidth.html http://www.awaresystems.be/imaging/tiff/tifftags/imagelength.html 这段代码的c翻译可以帮助我: https://stackoverflow.com/a/9071933/2079158 我不知道, 试过这样的事情: #include “stdio.h” #include “stdlib.h” main() { FILE* f = fopen(“tifo.tif”, “rb”); unsigned char info[500]; fread(info, sizeof(unsigned char), 500, f); long int width = *(long int*)&info[256]; short int height = *(short int*)&info[257]; printf(“width : %d \n”, width); printf(“height : %d \n”, height); fclose(f); […]

澄清C / C ++中使用的标题保护和头文件包含

我知道人们建议在头文件中包含标题保护,以防止头文件内容被预处理器多次插入到源代码文件中。 但请考虑以下情形: 假设我有文件main.cpp , stuff.cpp和commonheader.h ,其中.h文件有标题保护。 如果.cpp文件尝试多次包含commonheader.h ,那么预处理器将阻止它发生,并且在编译到目标代码后,我们得到, main.o包含main.o的内容一次。 stuff.o包含stuff.o的内容一次。 请注意,commonheader的内容已在文件中重复,但不在同一.o文件中。 那么在链接步骤中会发生什么? 由于.o文件被融合到一个exectuable中,我们将不得不第二次确保commonheader的内容不被重复。 编译器会处理这个吗? 如果没有,当我们处理大量头文件时,这不会成为问题,导致跨文件的代码重复并导致大的可执行文件大小。 如果我在问题的任何地方犯了一些概念错误,请纠正我。

如何避免在C或C ++ #include指令中明确声明目录路径?

我正在制作模拟器并编写了大量文件和标题。 问题是每当我包含一个文件时,我都会给出特定文件的相对路径。 例如,我的应用程序中的典型代码就像是一样 #ifndef AI_H #define AI_H #include #include “../world/world.h” #include “pathPlan.h” #include “skills/tryskill.h” #include “../info/condition.h” #include “dataStructures/destination.h” #include “../params/gamePlay.h” #include “../modules/controlModule.h” class ai { public: etc etc 我想避免使用相对路径。 例如,我想直接包含“tryskill.h”和“destination.h”而不给出绝对路径。 这样,如果我改变任何特定文件的位置,我不需要打扰。 我正在使用Ubuntu 9.10。 任何帮助将受到高度赞赏。

不使用#define的全局常量

好吧,我正在寻找一组内存地址作为.h文件中的常量,这些常量由一堆.c文件使用(我们在C中,而不是C ++)。 我希望能够看到变量的名称 ,而不是只看到调试器中的hex地址…所以我想将我当前拥有的#defines转换为全局范围的常量。 问题是,如果我这样定义它们: const short int SOME_ADDRESS = 0x0010 然后我得到了可怕的“多声明”错误,因为我有多个.c文件使用相同的.h。 我想使用枚举,但是这不起作用,因为它默认为整数(在我的系统上是16位……我需要对类型有更好的控制)。 我想把所有的地址都放在一个结构中…但我没有办法(我知道)在头文件中设置结构实例的默认值(我不想假设一个特定的.c文件首先使用结构并在其他地方填充它。我真的想在.h文件中定义常量) 我开始时看起来很简单,但是我没有看到在头文件中定义全局可用的short int常量的好方法……任何人都知道这样做的方法吗? 谢谢!

标题/包括警卫不起作用?

出于某种原因,我在头文件中获得了多个内容声明,即使我正在使用标题保护。 我的示例代码如下: main.c中: #include “thing.h” int main(){ printf(“%d”, increment()); return 0; } thing.c: #include “thing.h” int increment(){ return something++; } thing.h: #ifndef THING_H_ #define THING_H_ #include int something = 0; int increment(); #endif 当我尝试编译它时,GCC说我对some变量有多个定义。 ifndef应该确保不会发生这种情况,所以我很困惑为什么会这样。

如何在c ++中创建自己的头文件?

是否可以创建自己的新头文件? 任何人都可以帮助我如何使用一个例子在c ++中创建自己的头文件?

是否允许编译器向标准头添加函数?

是否允许C编译器向标准头添加函数并仍然符合C标准? 我在某处读到了这个,但除了附件J.5外,我在标准中找不到任何参考: 包含可能导致严格符合程序无效的任何扩展会导致实现不一致。 此类扩展的示例包括新关键字, 标准标头中声明的额外库函数 ,或者名称不以下划线开头的预定义宏。 但是,附件J是提供信息的而不是规范性的…所以它没有帮助。 所以我想知道一个符合标准的编译器是否可以在标准头文件中添加额外的function? 例如,假设它将非标准itoa添加到stdlib.h中。