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.c
和 list.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
,你会发现一个错误。
在一个 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.c
和 list.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
,你会发现一个错误。