Tag: 头文件

#include 与C ++程序中的#include

在C ++程序中包含前者而不是后者需要考虑哪些因素? 我总是包括math.h , stdlib.h和从不cmath , cstdlib等我不明白后者甚至存在的原因,有人可以请赐教吗?

在MinGW g ++编译器中获取“tlhelp32.h”的编译错误

我正在编写一个简单的C ++应用程序来检查给定的exe文件示例:’a.exe’是否正在运行(Windows OS),我已经用Google搜索并在下面的链接中找到了一些代码。 http://stackoverflow.com/questions/3355379/how-do-i-find-out-if-a-exe-is-running-in-c 上面提到的代码使用头文件“tlhelp32.h”。 我只是复制了代码并进行了一些必要的更改,然后在MinGW中编译,出现了下一个问题,该头文件中提到的所有数据类型都出错了ex: ‘DWORD’ does not name a type, ‘LONG’ does not name a type, ‘WCHAR’ does not name a type,’CHAR’ does not name a type 在现有的头文件无法编译之前,我从未遇到过这种问题(是的,我已经检查了它)。 非常感谢任何帮助。 代码如下: #include int main() { PROCESSENTRY32 pe32 = {0}; HANDLE hSnap; int iDone; int iTime = 60; bool bProcessFound; while(true) // go forever { […]

系统标头和普通标头gcc

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

是否需要在头文件中声明所有C函数

我是否需要在头文件中声明我在.c文件中使用的所有函数,或者我可以直接在.c文件中声明和定义? 如果是这样,在这种情况下.c文件中的定义是否也算作声明?

如何使用C中的特定头文件打印我们程序中使用的内置函数名?

我需要从特定的头文件中找到我们程序中使用的内置函数。 例如,我有以下C文件: #include int main() { int a; scanf(“%d”,&a); printf(“a = %d\n”, a); } 如果我将stdio.h头文件提供给任何命令,它需要输出如下输出: scanf printf 是否有任何内置命令来获取此信息? 或gcc或cc命令中可用的任何选项来获取此信息?

我是否需要明确包含共享库中使用的公共头文件(在包含路径文件夹中)?

我正在使用共享库,比如shr.so 这有一些头文件,比如shr_struct.h ,我需要在我的程序中使用的结构,比如shr_struct.h 。 我是否需要在include路径中保留shr_struct.h的副本, shr_struct.h在shr_struct.h中的shr_struct.h中声明结构类型的对象?

未定义的引用’_ *’链接器错误

我在编译/链接以下C代码时遇到问题。 链接器抛出的错误如下所示: pso.o:pso.c:(.text+0x41): undefined reference to ‘_ps’ … pso.o:pso.c:(.text+0x93): more undefined references to ‘_ps’ follow 这是我第一次为gcc编写C代码,所以我不确定如何解决这个问题。 我假设因为结构PS定义了我的头文件,它不知何故没有链接到pso.c. 但是,我确实在该源文件的顶部使用了#include“ps.h”语句。 我已经在下面包含了相关的源文件和头文件,以及我正在使用的make文件。 编写可链接的C代码是否缺少一个基本概念? 谢谢! 哦,这是一个粒子群优化器,如果你想知道:) main.c文件: #define MAIN #include #include #include #include “ps.h” int main(int argc, char *argv[]) { int c; double test; int test_int; srand(time(NULL)); printf(“starting pso\n”); pso(); printf(“finished pso\n”); return(0); } 有问题的文件,pso.c: #include #include “ps.h” double […]

为什么非extern可以在C / C ++中的.h文件中?

以此文件为例,有许多非外部结构,如: struct list_head source_list; 当多个编译单元包含此头文件时,它如何工作? 应该有错误报告,相同的符号被定义两次,对吗?

在’*’标记之前编译“错误:预期’)’时出现多个相同错误

我想用C编程。 当我使用以下参数编译时…. gcc -D_BSD_SOURCE -Wall -ansi -pedantic -g tokenizer.c FileOccur.c WordList.c wordstat.c indexer.c -o indexer 我从终端得到这个作为回应: In file included from ../Headers/WordList.h:11, from FileOccur.c:12: ../Headers/FileOccur.h:18: error: expected ‘)’ before ‘*’ token ../Headers/FileOccur.h:20: error: expected ‘)’ before ‘*’ token In file included from ../Headers/WordList.h:11, from WordList.c:11: ../Headers/FileOccur.h:18: error: expected ‘)’ before ‘*’ token ../Headers/FileOccur.h:20: error: expected ‘)’ […]

错误:在’int’之前预期’=’,’,’,’;’,’asm’或’__attribute__’

在LINUX中编译C程序时,我得到了foll。 错误: stream.h:1123: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘int’ stream.h:1124: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘mblk_t’ stream.h:1125: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘mblk_t’ 第1123,1124和1125行如下: __STREAMS_EXTERN int adjmsg(mblk_t *mp, register ssize_t length); __STREAMS_EXTERN mblk_t *allocb(size_t size, unsigned int priority); __STREAMS_EXTERN mblk_t *copyb(register mblk_t *mp); […]