我目前有一个“类似库”的 .c 文件(如下所示)。我有两个问题:
如果我想看看它本身是否编译得很好,我该怎么做?如果我尝试 gcc 它,它总是会给出“no main”错误,这是有道理的,但会引发一个问题:知道给定的 .c 文件是否可以在“隔离”中编译良好。我可以安全地得出这样的结论:如果编译器引发的唯一错误是“no main”错误,那么我的文件没问题吗?单独编译 .c 文件的一个很好的例子是确定哪些包含过多,如下所示。
-
在像这样的简单文件中是否有必要定义一个标头及其方法/结构声明,然后拥有这样小的 .c 文件以及其中的代码实现?
#ifndef SEMAFOROS
#define SEMAFOROS
#include <signal.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <semaphore.h>
typedef struct {
sem_t* id;
char* nome;
} Semaforo;
inline void lock(Semaforo* semaforo) {
sem_wait(semaforo->id);
}
inline void unlock(Semaforo* semaforo) {
sem_post(semaforo->id);
}
Semaforo* criarSemaforo(char* nome) {
Semaforo* semaforo = (Semaforo*)malloc(sizeof(Semaforo));
semaforo->id = sem_open(nome, O_CREAT, 0xFFFFFFF, 1);
semaforo->nome = nome;
}
void destruirSemaforo(Semaforo* semaforo) {
sem_close(semaforo->id);
sem_unlink(semaforo->nome);
free(semaforo);
}
#万一
Thanks
要在不链接的情况下编译它(不需要主入口点):
cc -c file.c -o file.o
即使对于定义将从其他源文件调用的例程的小文件,您仍然需要头文件。头文件是编译器在链接器将所有例程连接在一起之前了解例程接口的方式。如果您没有外部函数的声明,那么编译器必须对参数的数据类型做出假设(通常是错误的)。您可以在使用函数的每个源文件中声明这些函数,但头文件的要点是您只需在头文件中执行一次即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)