Tag:

系统标头和普通标头gcc

我知道这是一个非常愚蠢的问题,但我无法区分gcc中的系统头和普通头。 参考此链接 : 2.8系统接头 声明操作系统和运行时库接口的头文件通常不能严格符合C语言编写。因此, GCC会给出系统头文件中的代码特殊处理 。 GCC处理系统标题时,除“#warning”(参见“诊断”)生成的警告外,所有警告都将被禁止。 系统标题中定义的宏在任何扩展的地方都不受几个警告的影响。 当我们发现警告由于系统头中定义的宏中的代码而产生大量误报时,会临时授予此免疫权。 通常,只有特定目录中的标头才被视为系统标头。 这些目录是在编译GCC时确定的。 但是,有两种方法可以将普通标头添加到系统标头中: 在使用-isystem和-idirafter命令行选项添加到搜索路径的目录中找到的头文件被视为用于诊断目的的系统头。 还有一个指令#pragma GCC system_header,它告诉GCC将当前包含文件的其余部分视为系统头,无论它在哪里找到。 文件中“#pragma”之前的代码不受影响。 #pragma GCC system_header对主源文件没有影响。 我很感激答案,如果可能的话,会显示系统标题的一些内容,以及在链接中讨论的是什么样的警告或特殊处理。

由C中的SIGSEGV信号终止

我正在写一个C程序,它读取bmp图像的宽度和高度( http://smsoftdev-solutions.blogspot.com.au/2014/07/code-for-reading-bmp-image-files.html ) 。 但我在终端遇到错误,它表明: i ‘./a.out’ terminated by signal SIGSEGV (Address boundary error) 我做了一些谷歌搜索,他们提到它正在访问额外的内存问题,但我无法真正发现在我的代码中,任何建议将不胜感激 #include struct __attribute__((__packed__)) BitmapHeader { int width; int height; }; void loadBmp(char* filePath, struct BitmapHeader bmpHeaderInfo){ FILE* filePtr = fopen(filePath, “rb”); unsigned char header[54]; fread(header, sizeof(unsigned char), 54, filePtr); } int main(){ char path2BMP[] = “/cup.bmp”; struct BitmapHeader bmpHeaderInfo = […]

正确使用头文件?

最近我一直在使用头文件将我的程序拆分成单独的文件(包含函数和头文件的C文件声明它们)。 一切正常,但出于某种原因,我需要在每个C文件中包含和 …或者我的项目无法编译。 这是预期的行为吗?

C头中的function?

我听说您将函数原型放在头文件中,然后将函数定义放在.c文件中。 但是,这个.c文件是什么。 例如,如果你要包含一个文件“foo.h”,你会调用前面提到的.c文件“foo.c”,把函数定义放在其中,把它放在与foo.h相同的地方,并且当你尝试包含foo.h时,该函数是否会从c文件中inheritance并且该函数是否可以使用?

在C中定义两次函数

我有个问题。 我写了这段代码,ahac和main.c: 档案:啊 #ifndef _a_H #define _a_H int poly (int a, int b, int c, int x); int square (int x) { return x*x; } #endif // _a_H 档案:ac #include “ah” int poly (int a, int b, int c, int x) { return a*square(x) + b * x +c; } file:main.c #include #include “ah” int […]

如何用C编程语言检查头文件的有效性

在C编程语言中是否有一种方法可以检查头文件中的函数原型是否与编译时的实际函数定义相对应。 例如,如果我创建头文件,然后更改该头文件中描述的某些函数的签名,如果头文件中有错误的原型,我可以检查编译时间吗? 在编译之前,这是编译器或其他工具的工作吗? 谢谢。

Delphi XE3:使用多个C头文件和源文件

所以,我有一组相互依赖的.c和.h文件,而我正在试图弄清楚C / C ++到Pascal的工作方式(我的delphi / pascal工作非常基本)。 c文件是数学算法的步骤1-N(按顺序)(每个是一个单独的函数),一个头指定每个函数中使用的变量(我使用record在delphi中重新创建.h文件),另一个标题详细说明了自定义变量类型。 目标是访问函数而无需将C代码重写为Pascal / Delphi语法,从delphi代码链接到某些现有c。 有太多冗长的文件(12 .c和4 .h)供我剪断,我的C非常生锈,但我会尝试。 例如,我有一个文件funcs.h : #ifndef _FUNCS_H #ifndef _FUNCS_H #ifdef __cplusplus extern “C” { #endif #include “New_Type.h” // custom variable used in funcs.h #include “Optional.h” // optional set of more functions typedef struct { int a1[4]; double b1[10]; // Computed if optional functions are requested […]

C递归头文件包含问题?

假设您必须在2个头文件中定义相关结构,如下所示: 啊内容: #include bh typedef struct A { B *b; } A; bh内容: #include ah typedef struct B { A *a; } B; 在这种情况下,这种递归包含是一个问题,但是2个结构必须指向其他结构,如何实现呢?

安装OpenCV并使用GCC编译C程序

作为我正在开展的更大项目的一部分,我需要在C程序上使用OpenCV库。 我在Fedora 17 32位中使用yum安装了OpenCV和opencv-devel。 我指示预处理器导入opencv / cv.h和opencv / highgui.h作为必要的头文件。 正如我所提到的,gcc用于编译整个C项目。 但是,链接器似乎存在问题。 每当我尝试编译项目( gcc opencv.c -o opencv )时,我都会得到一个错误列表,类似于: /tmp/ccLJWE0c.o: In function `cvRound’: opencv.c:(.text+0x19): undefined reference to `lrint’ /tmp/ccLJWE0c.o: In function `cvDecRefData’: opencv.c:(.text+0xa5c): undefined reference to `cvFree_’ opencv.c:(.text+0xacd): undefined reference to `cvFree_’ /tmp/ccLJWE0c.o: In function `cvGetRow’: opencv.c:(.text+0xbc3): undefined reference to `cvGetRows’ /tmp/ccLJWE0c.o: In function `cvGetCol’: opencv.c:(.text+0xbee): undefined […]

在Quake源代码中我无法理解的符号(C)

我正在看一下Quake 1 GPL Code,我遇到了各种类似的头文件,其目的或用途我似乎并不理解。 它们看起来像某些类型的表,并且结构如下 {1, 0}, {1, -1}, {1, -2}, {1, -3}, {1, -4}, {1, -5},[…] 他们之前或之后没有任何东西。 我理解他们定义的东西,但我从来没有在C中遇到过这种符号。你可以阅读我在这里提到的一个头文件。 我的问题是:那些东西是什么? ASM实际上给我的问题少于那些东西。