CLion 中的多个 C 源文件

Multiple C Source Files in CLion

在一个 CLion 项目中,我有两个 C 语言源文件,"main.c" 和 "list.c"。

源文件 "main.c" 有这个:

#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}

源文件 "list.c" 有这个:

#include <stdio.h>

int printFoo() {
    printf("I want Krabby Patties!\n");
    return 0;
}

现在如何从 main() 函数中调用 printFoo()?我知道我不能在 main.c 中执行 include<list.c> 因为那会导致多重定义错误。

您可以创建一个头文件"list.h"

#ifndef __LIST_H__
#define __LIST_H__ 

int printFoo();

#endif

然后将其包含在main.c中:

#include <stdio.h>
#include "list.h"

int main() {
    printf("Hello, World!\n");
    printFoo();
    return 0;
}

CLion 使用 CMake 组织和构建项目。

CMakeLists.txt 包含构建说明。

命令 add_executable(program main.c list.c) 使用文件 main.clist.c 创建可执行文件。将所有源文件添加到其中。您可以添加 header,但这不是必需的。

Header 文件包含函数的定义和其他东西,实现的源文件,但是你可以合并它们。


main.c

#include "list.h"

int main() {
    printFoo();
    return 0;
}

list.h

#pragma once
int printFoo();

list.c

#include "list.h"
#include <stdio.h>

int printFoo(){
    return printf("I want Krabby Patties!\n");
}

#pragma once 告诉编译器包含一次 header 文件。如果你有一个文件的多个 include 而没有 #pragma once,你会发现一个错误。