是否需要#include某个文件,如果在标题(*.h)内,使用此文件中定义的类型?
例如,如果我使用GLib并希望gchar在我的标题中定义的结构中使用基本类型,是否有必要执行a #include <glib.h>,知道我已经在我的*.c文件中有它?
如果是,我还必须把它放在#ifndef和#define之后#define?
我是一年级计算机专业的学生,我的教授说#define的行业标准,以及被禁止#if,#ifdef,#else,和其他一些预处理指令.由于出乎意料的行为,他使用了"禁止"一词.
这准确吗?如果是这样的话?
事实上,是否存在禁止使用这些指令的任何标准?
我开始使用C编程了.我目前有一个包含很多功能的大文件.我想将这些函数移动到一个单独的文件,以便代码更容易阅读.但是,我似乎无法弄清楚如何正确包含/编译,并且无法在我找到的任何在线教程中找到示例.这是一个简化的例子:
#include <stdlib.h>
#include <stdio.h>
void func1(void) {
printf("Function 1!\n");
}
void func2(void) {
printf("Function 2!\n");
}
int main(void) {
func1();
func2();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如何将C函数移动到单独的文件中?仅供参考:我正在使用gcc.
更新:这些答案非常有用,谢谢.现在似乎我的简化示例不够好,因为我意识到我的程序编译失败的原因是因为我在我的函数中使用了一个全局变量.
#include <stdlib.h>
#include <stdio.h>
int counter = 0;
void func1(void) {
printf("Function 1!\n");
counter++;
}
int main(void) {
func1();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
将这些函数移动到外部文件不起作用,因为它们需要引用此全局变量:
#include <stdlib.h>
#include <stdio.h>
#include "functions.c"
int counter = 0;
int main(void) {
func1();
counter = 100;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?