Tag: 标题

为什么编译器找不到头文件?

我在linux环境中工作。 在我当前的目录中,当我执行ls命令时,这就是我得到的 在repo.c中,我有这行代码 #include 但是,当我尝试使用此命令编译和创建可执行文件时(也链接到库文件battleship.c) gcc repo.c -lbattleship.c 我收到这个错误 “repo.c:10:24:错误battleship.h:没有这样的文件或目录” 有谁知道为什么编译器找不到头文件? 我把它放在与主C文件相同的目录中

专业#include内容

我需要创建一个API,允许我的客户的开发人员使用将作为库发布的专有C模块(想想.lib或.so – 不是源代码)。 我想尽可能使标题符合开发人员(因此我不需要),遵循最佳实践并提供说明,示例,警告等方面的评论 。 我还应该从业务,技术和普通常识的角度考虑什么? 谢谢!

GCC抱怨非标准呼叫约定“ZEND_API”

在PHP的Zend引擎代码中,我在头文件中看到如下所示的行。 ZEND_API char *zend_strndup(const char *s, unsigned int length) ZEND_ATTRIBUTE_MALLOC; 我是专业的C / C ++编程新手。 当我尝试使用gcc编译此包中的c文件时,我得到错误 zend_alloc.h:55: error: expected =, ,, ;, asm or __attribute__ before char 我尝试了命令gcc -I./ -I../TSRM zend_language_*.c 看起来gcc抱怨ZEND_API。 ZEND_API表示什么? 任何人都可以帮我弄清楚为什么会发生这种错误? 文件所在的SVN存储库。

包括fortran子例程中的ac / c ++头文件

我有一个用C / C ++编写的库,它的开发人员声明它有一个Fortran接口。 将启用该接口,包括头文件* .h并调用经典子例程。 我想编译我的Fortran程序,也链接该库。 该库已经过测试,可以正常使用。 这是主程序: ! Main program INCLUDE ‘pastix_fortran.h’ Program TEST IMPLICIT NONE call GO_PASTIX END PROGRAM TEST 例程GO_PASTIX是 SUBROUTINE GO_PASTIX IMPLICIT NONE pastix_data_ptr_t :: pastix_data integer :: pastix_comm pastix_int_t :: n, rhs, ia(NCOLS+1), ja(NNZER) pastix_float_t :: avals(NNZER), b(NROWS) pastix_int_t :: perm(NROWS), invp(NROWS), iparm(64) real*8 :: dparm(64) call pastix_fortran(pastix_data,pastix_comm,n,ia,ja,avals,perm,invp,b,rhs,iparm,dparm) END […]

包含文件的图表

当我处理别人的代码时,我需要滥用grep才能找到数据类型声明等,这通常会让我感到困惑。 我想有一些工具分析源代码并生成一些类似graphviz的绘图,并允许我遵循依赖关系。 我也在互联网上找到了这个 ,但我认为仅仅是针对Linux内核的taylored。

仅在C / C ++中使用标头时?

是否通常使用像“vec3”这样的类只有标题? 这是我的实际代码: #ifndef VECTOR3_H #define VECTOR3_H #include class vec3 { public: double x, y, z; vec3(); vec3(double x, double y, double z) : x(x), y(y), z(z) {} double lenght() { return sqrt(pow(x, 2) * pow(y, 2) * pow(z, 2));} double lenghtSquared() { return pow(x, 2) + pow(y, 2) + pow(z, 2);} double distance(vec3 v) { […]

链接问题与“多重定义”编译错误

我有以下“常量”标题: /* constants.h */ #ifdef __cplusplus extern “C” { #endif #pragma once #ifndef CONSTANTS_H #define CONSTANTS_H const char * kFoo = “foo”; const char * kBar = “bar”; #endif #ifdef __cplusplus } #endif 我在文件Xc和Yc #include -ing这个标题。 请注意,我不是在Xh或Yh包含它。 文件Xc和Yc被编译成目标文件,这些目标文件存档到名为libXY.a的静态库中。 当我在Zh包含Xh和Yh时,当我链接到libXY.a ,我无法编译Zc而没有错误: /* Zh */ #include “Xh” #include “Yh” 尝试编译Zc时出现以下编译错误: /path/to/libXY.a(Xo):(.data+0x0): multiple definition of `kFoo` /path/to/libXY.a(Yo):(.data+0x0): first […]

随机数组有很多数字得到错误

我有一个功课要做:我需要在一个包含100000个数字的随机数组中测量bubblesort的时间。 当我尝试随机生成数字时,我收到错误。如果我不随机生成数字,我每次都会得到0。 到目前为止我这样做了: main.c int main() { int *a,n = 0; srand(time(0)); beolvas(&a,&n,”be.txt”); clock_t start,stop; start = clock(); bubblesort(a,n); stop = clock(); float timespent = (stop – start)/CLOCKS_PER_SEC; printf(“%f\n”,timespent); kiir(a,n); free(a); return 0; } kibe.c(sorry I write it bad) void beolvas(int **a,int *n,const char * file) { int i; FILE * fin; fin = fopen(“be.txt”, […]

gcc无法找到包含的标头

我正在使用名为colors.h的标colors.h组织我的源代码。 标题是这样的: #define DEFAULT 0x07 #define BLACK 0 #define GRAY 7 #define BLUE 9 #define GREEN 10 #define CYAN 11 #define RED 12 #define MAGENTA 13 #define YELLOW 14 我将标题放在主要源代码的同一目录下,名为kernel.c ,并包含如下: #include 但是当我尝试编译时,我得到了这个: ubuntu @ eeepc:〜/ Development / Test $ gcc -o kernel.o -c kernel.c -Wall -Wextra -nostdlib -nostartfiles -nodefaultlibs kernel.c:1:20:error:colors.h:没有这样的文件或目录 Ubuntu的@ EeePC的:〜/开发/测试$ 我能做些什么来解决这个问题?

带有位图字体的C头文件

我需要对像素缓冲区进行一些基本的文本渲染,我认为有一个由char索引的表,字母表示为二进制数组就足够了……有人知道这样的免费标题吗? 例: char data[256][8][8]; void init() { data[‘a’] = { {0,0,1,1,1,0,0,0}, {0,1,0,0,0,1,0,0}, {0,0,0,0,0,0,1,0}, {0,0,1,1,1,0,1,0}, {0,1,0,0,0,1,1,0}, {0,1,0,0,0,0,1,0}, {0,1,0,0,0,1,1,0}, {0,0,1,1,1,0,1,0}, }; } 我可以继续使用其余的字母表,但后来我不需要问…¡但这给了我一个想法! 如果没有可用的位图字体的免费标题,每个答案都可以实现一个字母,我可以在这里组装整个文件^ _ ^