Tag:

如何在头文件和c文件中声明函数指针?

我对如何在头文件中声明函数指针感到困惑。 我想在main和一个名为menus.c的文件中使用它,并在menus.h中声明它。我假设。 我们想要初始化以指向某个function。 它看起来像这样: void (*current_menu)(int); 我们在menus.c,menus.h和main中写了什么?

从C中同一目录中的另一个文件调用函数

我正在学习C,但我对Java等高级编程语言有很长的经验。 我正在阅读有关头文件的内容,所以我正在玩它们,但是我注意到我可以从另一个文件调用一个函数而不用#including它(它在同一个目录中),这怎么可能?! 是make文件,配置那种方式的链接器还是什么? 我们有两个文件 main.c add.c main.c从add add.c调用函数add(int x,int y) ,但是在#including add.c之前我错误地编译了它并且它工作了! 更令人困惑的是,当我#include add.c时,它会在函数add上产生多重定义错误

如何在gcc中编译一个包含头文件的C程序?

我想在gcc中编译一个C程序,它有我的2个头文件。 我正在使用命令: gcc UDP_Receive.c -o UDP_Receive -lm 编译它但我得到一个错误,指出“UDP_Data.h:没有这样的文件或目录” 如何告诉编译器包含这些头文件? 头文件: #include“UDP_Data.h” #include“Crypt.h” 谢谢,Ritesh

在C源文件中包含带有命名空间的C ++头文件会导致编译错误

我不是一个专业的C ++程序员,我最近在C ++中做了一个技巧,这引起了我下面的问题。 我的任务目标:复制特定的非系统线程(实际上是协作线程)安全模块,以创建系统线程安全版本,以支持系统中的不同需求。 但是我们决定创建一个名称空间来保护C ++头文件中的系统线程版本,而不是创建sys_XXX函数来保持兼容性。 我实际上可以将它包含在CPP文件中并愉快地工作但我刚刚意识到我的funcInit调用在它到达CPP文件控件之前没有被调用。 不幸的是,协作线程版本的这个init是在C文件中。 现在我需要从同一个地方初始化我的系统线程安全版本,但我已被编译错误阻止,这是我所知道的难以解决的。 编译错误日志: – In file included from sysinit.c:87: sys_unicode.h:39: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘SystemThreadUtils’ <== corresponds to line [namespace SystemThreadUtils {] sysinit.c:88: sysinit.c:512: error: expected identifier or '(' before string constant <== corresponds to line [extern "C" bool SystemThreadUtils::funcInit(void);] sysinit.c:513: error: expected […]

在另一个头文件中包含标头

我在.h文件中定义了一个struct item 。 现在我在另一个.h中定义另​​一个struct tPCB ,它是同一个项目的一部分,我需要tPCB才能有一个item 。 我认为只是制作相同的TurboC项目的一部分将允许我在另一个头文件中使用item,但编译器会抛出“ undefined type: ite ”。 我想我不得不在第二个包含第一个标题,但是我已经看到了相同的代码,但没有这样做。 除了添加#include行以使其工作之外,还有其他方法吗?

代码说明(链表C)

这不是我的代码。 我把这个代码从这个网站上删除了: http://www.macs.hw.ac.uk/~rjp/Coursewww/Cwww/linklist.html 我正在使用有关如何构建链接列表的参考资料。 我对发生的事情感到有点困惑。 有人可以向我解释发生了什么事。 我会用1-5来标记令我困惑的事情。 #include #include struct list_el { int val; struct list_el * next; }; typedef struct list_el item; void main() { item * curr, * head; int i; head = NULL; //1 for(i=1;ival = i; curr->next = head; //2 head = curr; //3 } curr = head; // 4 while(curr) […]

外部内联函数会发生什么?

如果我在.h文件中定义我的函数会发生什么 extern int returnaint(void); ,在相关的.c文件中定义它 inline int returnaint(void) { return 1; } 并在另一个.c文件中包含标题并使用该函数? 当我单独编译事物,为每个.c文件创建一个目标文件然后链接它们时,是否包含内联函数,或者会发生什么? 我知道编译器可以忽略inline ,但是如果它在这种情况下不忽略它呢?

何时将静态函数定义放在C中的头文件中?

我遇到了一些在头文件中有一个大的静态函数的代码,我只是好奇它什么时候/它不好。 例如,如果许多.c文件包含标题,为什么不直接定义非静态函数并将其链接? 关于何时/何时不将静态函数定义放在C中的头文件中的任何建议或经验法则,我们将不胜感激, 谢谢

如何在C中链接多个实现文件

我有一些.c文件,即实现文件说 main.c中 AC 公元前 来自任何文件的函数可以从不同的文件中调用任何函数。 我的问题是,我是否需要一个.h ie头文件用于A和B的每个实现,其中每个头文件都有A或B中所有函数的定义。 另外,main.c会包含Ah和Bh #included吗? 如果有人能够最终说清楚,那么我如何在以后编译并运行终端中的多个文件。 谢谢。