c - 我可以在 C Header 上使用 extern 函数声明,它也用于包含函数定义的 C 源文件吗?
问题描述
我在 C89 中有以下源代码:
例程_ac:
struct DataRoutineA routineA(int a, int b) {
struct DataRoutineA data = (struct DataRoutineA *) malloc(sizeof(DataRoutineA));
data.a = a;
data.b = b;
return data;
}
和以下头文件:
例程_a.h:
struct DataRoutineA {
int a;
int b;
};
extern struct DataRoutineA routineA(int a, int b);
的目的routine_a.h
是它可以用作其他源代码文件的标头。因此定义了结构以及外部函数定义。在那种情况下,我的理解是标题已正确定义。
但是,如果此标头也用于 extern 子句,会发生什么情况routine_a.c
?在 ANSI C/C89 中解决这个问题的方法是什么?这种情况下我需要两个不同的标题吗?
解决方案
默认情况下,C 中的所有函数都是外部函数。所以没有区别
extern struct DataRoutineA routineA(int a, int b);
和
struct DataRoutineA routineA(int a, int b);
extern
在声明函数原型时确实需要关键字。
推荐阅读
- regex - 如何为下面的模式生成正则表达式?
- java - 当我为 JerseyTest 注册 JacksonFeature 时,我可以使用对 Jackson ObjectMapper 的引用吗?
- graphviz - 用图案着色 Graphviz 对象
- amazon-dynamodb - 在 DynamoDB 中按范围键对结果进行排序不起作用
- serial-port - 串行 UART 拦截捕获。无法做出正面或反面
- python - 为什么“追加”方法不能正常工作?
- button - 带有透明 png 的颤振按钮
- go - 如何使用 vscode 调试 go 1.11.x
- ios - 即使正在设置图像,也不会在 UIImageView 中显示
- android - 在 Android 上存储传感器数据和转储事件文件