相关疑难解决方法(0)

我应该在标题中使用#include吗?

是否需要#include某个文件,如果在标题(*.h)内,使用此文件中定义的类型?

例如,如果我使用GLib并希望gchar在我的标题中定义的结构中使用基本类型,是否有必要执行a #include <glib.h>,知道我已经在我的*.c文件中有它?

如果是,我还必须把它放在#ifndef#define之后#define

c file-organization c-preprocessor

70
推荐指数
3
解决办法
5万
查看次数

#define是否在行业标准中被禁止?

我是一年级计算机专业的学生,我的教授说#define的行业标准,以及被禁止#if,#ifdef,#else,和其他一些预处理指令.由于出乎意料的行为,他使用了"禁止"一词.

这准确吗?如果是这样的话?

事实上,是否存在禁止使用这些指令的任何标准?

c c-preprocessor preprocessor-directive

68
推荐指数
10
解决办法
7822
查看次数

如何将C函数移动到单独的文件中?

我开始使用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)

我该如何解决这个问题?

c

18
推荐指数
3
解决办法
2万
查看次数