Tag: header

#include :没有这样的文件或目录(即使源和头都在同一目录中)

我最近开始将我用Java编写的游戏引擎(使用lwjgl)转换为C / C ++。 我在Fedora 25上使用Qt Creator和CMake(我很确定这不影响任何事情)链接所有目录,文件等。我的系统上安装了GLFW,但我决定使用源版本,而不是比包含的版本。 我很高兴我的扩展加载器,并按照GLFW网站上的教程进行配置。 我没有通过“Hello World”测试,因为当我在我的main.c文件中包含glad.h文件时,我收到一个错误: : No such file or directory 同样奇怪的是我在glad.c文件中得到了同样的错误,该文件是使用glad自己的生成器创建的。 我的main.c文件看起来像这样 #include #include #include int main(int argc, char *argv[]) { printf(“Kick Ass Game Engine”); return 0; } 我也尝试过使用”glad.h:而不是 (我在这里找到了建议)。这对我的main.c文件有效,但是我对glad.c文件仍有同样的问题即使我编辑它以反映main.c 我的项目目录如下所示: – KAGE/ -> CMakeLists.txt -> glad.c -> glad.h -> main.c -> khplatform.h -> KAGE/lib/ -> glad -> glfw-3.2.1 […]

将主要定义的类型传递给C中的标题

所以,正如标题所说,我应该在主文件中定义一个类型,并以某种方式将其传递给标题。 我试图以任何方式做到这一点,但我没有想法。 我这样定义:“typedef int DATA;” 并在标头中将其用作数据类型。 我尝试在包含标题之前插入typedef,但仍然无法识别。 有任何想法吗? 或者甚至不可能以这种方式做到这一点? #include #include typedef int DATA; #include “PriorityQueue.h” int main(){ int priority; DATA value; 这是我的主要开始 #ifndef PRIORITY_QUEUE_H_ #define PRIORITY_QUEUE_H_ struct priorityQueue{ int priority; DATA value; struct priorityQueue *next; }; typedef struct priorityQueue LINK; void createEmpty(LINK **head); void add(LINK **head, int p, DATA v); void deleteElement(LINK **head, int […]

在TCP标头中操作ISN号码的最有效方法

我目前正在尝试编写一个能够创建稳定的TCP连接并完全控制ISN号码的程序。 我一直用C语写作,我的知识非常有限,我已经知道是否有更好的方法。 我尝试的是手动构建标头,使用原始套接字发送和接收数据包而不会干扰内核,这是一个挑战。 因此,无论语言如何,您认为操作ISN的最有效和最简单的方法是什么?

变量重定义,嵌入式c

我正在研究一个嵌入式c项目,并且遇到了全局变量重定义的问题。 我已将函数声明和定义拆分为少量的.h和.c文件。 其中许多函数需要访问global_vars.h中定义的全局变量。 因此,在头文件的开头,#ifndef,#define部分,“global_vars.h”。 如果我不这样做,你可能会想到我得到了一堆未定义的变量错误。 但是,即使global_vars.h具有#ifndef _GLOBAL_VARS_H_ #define … #endif,我也会得到所有全局变量的重定义错误。 我的猜测是,当链接器尝试链接各种目标文件时,由于所有“blah_blah.h”文件中的#include“global_vars.h”,它会看到重新定义。 不过,我的理解是#ifndef …处理这个问题。 我有什么东西可以俯瞰吗? 提前致谢

malloc undefined

我目前正在重写链表模块,我收到一些奇怪的错误。 在两个IDE(Netbeans和Visual Studio Express)中,我收到一个警告,即malloc未定义,并且我的linkedlist.c文件中找不到的函数也没有定义。 下面是我的3个文件。 main.c中 #include #include #include “linkedlist.h” int main(void){ struct linked_list * l_list; l_list = new_list(); printf(“%i”, l_list->length); getchar(); return (EXIT_SUCCESS); } linkedlist.h #ifndef LINKEDLIST_H #define LINKEDLIST_H struct linked_list{ int length; struct linked_list_node * head_node_ptr; }; struct linked_list_node{ struct linked_list_node * prev_node_ptr; struct linked_list_node * next_node_ptr; struct linked_list_data * head_data_ptr; }; struct […]

如何在头文件中声明extern 2d-array?

我们在LCD.c中有这个声明: unsigned char LCD[8][64] = {((unsigned char) 0)}; 在LCD.h中我们希望有类似的东西: extern unsigned char LCD[][]; 我们收到此错误: Error[Pe098]: an array may not have elements of this type

标题的宏定义,放置它们的位置?

在定义标头所依赖的宏时,例如_FILE_OFFSET_BITS , FUSE_USE_VERSION , _GNU_SOURCE等等,放置它们的最佳位置在哪里? 我考虑过的一些可能性包括 位于依赖于该文件中包含的标头所公开的定义的任何源文件的顶部 紧接着相关标题的包含之前 通过编译器定义CPPFLAGS级别? (例如-D_FILE_OFFSET_BITS=64 ): 整个源代码回收 整个项目 只是需要它的来源 在项目标题中,还应包括宏应用的那些相关标题 其他一些我没有想过的地方,但是无限优越 注意:适用于制作,自动工具和其他构建系统的合理性是我决定的一个因素。

mpi.h:使用不定义它的类型?

我正在尝试将OpenMPI的mpi.h的重要部分翻译成D编程语言,所以我可以从D调用它。(HTOD根本不起作用。)我无法围绕下面的代码包围: typedef struct ompi_communicator_t *MPI_Comm; OMPI_DECLSPEC extern struct ompi_communicator_t ompi_mpi_comm_world; OMPI_DECLSPEC extern struct ompi_communicator_t ompi_mpi_comm_self; OMPI_DECLSPEC extern struct ompi_communicator_t ompi_mpi_comm_null; 问题是ompi_communicator_t永远不会在mpi.h中定义,而mpi.h除了stddef.h之外不包含任何其他文件,它显然不包含定义。 (评论说它包含在ptrdiff_t 。)这些是mpi.h中唯一包含字符串ompi_communicator_t 。 这个结构的定义来自哪里? 有什么技巧我应该知道哪些类型可以凭空出现? (还有其他几种结构,但这是我偶然发现的第一个结构。)

Eclipse C / C ++(CDT)将文件导入项目 – 未找到头文件 – 包含路径

我正在尝试将文件导入Eclipse C项目并进行编译。 构建过程找不到本地头文件。 头文件位于src目录中。 如何在eclipse中编辑包含路径? 如果我手动完成,我可以在gcc中指定-I选项。 Building file: ../src/averaging.c Invoking: GCC C Compiler gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF”src/averaging.d” -MT”src/averaging.d” -o”src/averaging.o” “../src/averaging.c” ../src/averaging.c:2:23: fatal error: averaging.h: No such file or directory compilation terminated. make: *** [src/averaging.o] Error 1

C / C ++:如何找出给定定义的头文件链?

在Visual C ++中,可以通过按F12或选择Go to Definition来找到定义任何名称 (变量或类型)的头文件。 此function非常有用,但它仅显示定义名称的最终位置 (头文件)。 有没有办法找出从我的源文件到给定名称的最终头文件的头文件链 ? 例如,考虑以下代码: // main.cpp #include int main() { size_t s; return 0; } 在Visual C ++ 2010中,如果我在上面的main.cpp查找size_t的定义,它会将我放在一个名为sourceannotations.h文件中。 我知道这个标题链以stddef.h (我已经包含)开头,并以sourceannotations.h结尾。 如何弄清楚这条链中间的链接?