c - 如何处理头文件中的函数定义?

标签 c gcc compilation compiler-errors header-files

有没有什么方法可以将设计不佳的头文件编译为目标文件,而无需使用 gcc 更改文件扩展名或内容,或者我是否可以复制文件/编辑它? (这是因为我使用的是公共(public) SDK,即我没有编辑头文件的权限,并且因为在我的 Makefile 中使用 cp 似乎是一个重大黑客行为,而且也很耗时)

示例

main.c

#include <print.h>
#include <app.h>

int main(void) {
    print("Starting app . . . ");
    run();
}

app.h

#ifndef APP_H
#define APP_H

int runApp(void);
#endif

app.c

#include <print.h>
#include <app.h>

int runApp(void) {
    print("This is my app!");
    return 0
}

打印.h

#ifndef PRINT_H
#define PRINT_H

int print(char* str) {
    printf(str);
    return 0;
}

#endif

编译使用:

$ gcc -o main.o main.c
$ gcc -o app.o  app.c
$ gcc -o main   main.o app.o

SDK 示例程序使用单个目标文件(gcc -o main.o main.c 和 gcc -o main main.o),但在我的情况下这会变得非常困惑。

最佳答案

创建

_print.h

int print(char* str);

打印.cpp

#include <print.h>

并将您的包含内容更改为“_print.h”

关于c - 如何处理头文件中的函数定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33332676/

相关文章:

c - C 中的内联汇编 - 了解编译结果

c - 在没有 strtok/lexer 的情况下将字符串解析为标记

Swift 编译器用 1 个数组(>30 秒)编译简单程序的时间太长

c - 为什么我们使用 sizeof 使用 malloc ?

ruby-on-rails - 如何从图像中读取条形码

无法从 Fortran 90 中返回的 C 浮点指针获取数据

c++ - 所有版本的 GCC 都在使用在定义中具有默认类型的模板

gcc - ARM7TDMI 不支持请求的专用寄存器

c# - .NET 构建过程和链接

ios - ios如何将Objective-C转换为C语言