Tag: 包括

#include iostream in C?

在C ++中,我们始终将以下内容放在程序的顶部 #include C怎么样?

用C ++编译的C代码:未定义的引用

我有一个小程序,我可以毫无困难地使用GCC和ICC编译,但我也希望代码能够与G ++和ICPC一起使用。 我试着添加这个: #ifdef __cplusplus extern “C” { #endif 在开头和这个: #ifdef __cplusplus } #endif 在所有头文件的末尾,但我仍然得到几个未定义的引用“…”错误。

在C项目中使用特征

我正在研究从互联网上获得的一个C项目,我正在尝试为涉及线性代数的项目添加一些函数。 在我之前的C ++作品中,我通常依赖Eigen进行线性代数。 有没有办法将Eigen用于C项目? 如果是的话,我该怎么做才能做到这一点? (简单地添加Eigen头文件是不够的,因为例如标准C ++文件不会自动包含)

包括来自另一个目录的头文件

我有一个主目录A有两个子目录B和C 目录B包含头文件structures.c : #ifndef __STRUCTURES_H #define __STRUCTURES_H typedef struct __stud_ent__ { char name[20]; int roll_num; }stud; #endif 目录C包含main.c代码: #include #include #include int main() { stud *value; value = malloc(sizeof(stud)); free (value); printf(“working \n”); return 0; } 但是我收到一个错误: main.c:3:24: error: structures.h: No such file or directory main.c: In function ‘main’: main.c:6: error: ‘stud’ undeclared (first use […]

如何使用GCC在C上编译库?

我用文件pila.h和pila.c了一个库。 我使用gcc pila.c -c编译文件pila.c ,这个库工作正常。 我测试过了。 然后我又建了一个图书馆。 该库包含文件pila_funciones_extra.h和pila_funciones_extra.c 。 在这个库中,我需要包含第一个库。 在文件pila_funciones_extra.h我将下一行包括在内: #include “pila.h” 并在文件pila_funciones_extra.c我放下一行: #include “pila_funciones_extra.h” 必须如此。 但是当我尝试编译文件pila_funciones_extra.c ,编译器不会识别包含库pila 。 它表示库pila中定义的函数,结构,常量和宏尚未定义。 我尝试使用gcc pila_funciones_extra.c -c和gcc pila_funciones_extra.c -c pila.o编译它,但它不起作用。 我确保所有文件都在同一个文件夹中。 我正在研究Ubuntu。 谁能告诉我正确的编译方法?

Eclipse CDT C / C ++:包含来自另一个项目的头文件

我在Eclipse CDT main和共享中有两个c ++项目。 在共享中我有一个名为calc.h的标题。 我想在main中使用这个头,所以我做了以下事情: 将#include “calc.h到#include “calc.h中的相关文件中 在main的properties -> Project references我检查了共享 我希望这会有效,但我得到一个fatal error: calc.h: No such file or directory编译时fatal error: calc.h: No such file or directory ,所以项目引用不知何故不起作用。 我可以通过在main的properties->C/C++ Build->Setting->GCC C++Compiler->Includes手动添加共享的源文件夹来实现它,但是我感觉不会这会变成繁琐的大项目更复杂的依赖。 因此,我希望Eclipse可以通过项目引用来处理这个问题。 我错过了什么或手动是唯一的方法吗?

在C中包含文件

我想创建一个涉及sqrt() , floor()和pow()的简单函数。 所以,我包括 。 当我尝试使用我的函数时,我的程序说sqrt()和floor()不存在。 我已经对我的文件进行了三次检查并重写了它们,但它仍然会出现同样的错误。 只是为了检查目录是否有任何问题,我创建了另一个单独的文件来计算相同的东西并且它有效。 我现在很无能为力。 我究竟做错了什么? 非运作程序的代码: #include #include “sumofsquares.h” int sumofsquares(int x){ int counter = 0; int temp = x; while(temp != 0){ temp = temp – (int)pow(floor(sqrt(temp)), 2); counter ++; } return counter; } 工作测试文件: #include #include int main(void){ printf(“%d”, (int)pow(floor(sqrt(3)), 2)); } 错误就是这个 /tmp/ccm0CMTL.o:函数sumofsquares’:/ home / cc136 / […]

是否可以#Include一个“钻石inheritance”结构?

我想用C做一些项目。 我想知道是否有可能从同一个文件中两次制作#include ,以一种回忆钻石遗产的方式。 即 在ac中有#include “ah” 在bc中有#include “bh” 在bh中有#include “ah” 是否可以在交流中 #include “bh” ? 我收到一个错误: some_variable already defined in a.obj

C编程:预处理器,包括宏的文件

如果我能找到一种方法来做类似的事情,我可以在我的应用程序中删除数百行代码,并大大提高可维护性。 有人有主意吗? #include int main( ) { #define include_all_files(root) \ #include #root “1.h” \ #include #root “2.h” \ #include #root “3.h” \ #include #root “4.h” include_all_files( first_library ) include_all_files( second_library ) include_all_files( third_library ) return 0; } 编辑 : 我很欣赏这些回复,我的例子似乎导致了误导,所以这就是我实际上要解决的问题: 我正在实现一个有限状态机。 通过命名约定,我已经让它变得像添加状态一样简单: STATE(initial_screen) #include “initial_screen.state” END_STATE STATE(login) #include “login.state” END_STATE 但是,如果我能回答原来的问题,我可以将其重构为简单的事情: ADD_STATE(initial_screen) ADD_STATE(login) 这是因为文件名和状态名称以及所有底层连接和其他所有内容都遵循类似的约定。 但是,我无法弄清楚如何根据宏中收到的令牌实现包含文件。

如何在Windows上包含外部C库

我是C的新手,我试图在不使用任何IDE的情况下包含外部库,只使用文本编辑器和windows cmd上的minGW编译器。 在这种情况下,库是libPNG ,我真的想了解该过程如何不仅适用于此库 。 如果有更好的方法(也更容易)做到这一点,我也想知道。