新建CLion C项目应选“C Executable”,确保CMakeLists.txt中project声明为C而非CXX,并显式设置set(CMAKE_C_STANDARD 11),同时删除默认生成的main.cpp、新建main.c,正确配置MinGW工具链。

选“C Executable”而不是“C++ Executable”
CLion 新建项目时默认没有单独的 “C Project” 按钮,必须在模板中手动选对类型。点 New Project 后,在左侧列表里找的是 C Executable(不是 C++ Executable),否则生成的 CMakeLists.txt 会默认设 project(myproj CXX),导致 .c 文件被当作 C++ 编译,碰到 inline、_Bool 或 VLAs 就报错。
常见错误现象:error: 'inline' specifier invalid in C99 mode 或 unknown type name '_Bool'——本质就是编译器被当成了 C++ 模式。
- 项目名称别用中文或空格,路径也避开中文目录(比如
D:\my_c_project可以,D:\我的项目会导致 CMake 配置失败) - Language standard 下拉框要选
C11或C17,不是C++17 - 创建后立刻检查自动生成的
CMakeLists.txt:第一行应为project(myproj C),不是project(myproj CXX)
CMakeLists.txt 里必须显式声明 C 标准
仅靠新建时选了 C Executable 不够,CLion 有时仍会漏写标准版本。如果没手动指定,GCC/Clang 默认可能用 C90,而你写的 for (int i = 0; ...) 就会编译失败。
打开 CMakeLists.txt,在 project(...) 下面加一行:
立即学习“C语言免费学习笔记(深入)”;
set(CMAKE_C_STANDARD 11)
注意不是 17 或 23——除非你确认所有目标平台的编译器都支持(比如 MinGW-w64 11.0+ 才完整支持 C17)。C11 是目前最稳的选择。
- 不要写
set(CMAKE_C_STANDARD_REQUIRED ON),它会让 CMake 在不支持时直接退出,反而掩盖真实问题 - 如果用了
stdatomic.h或线程函数,才需要升到 C11 并确保工具链支持 - 修改后右键
CMakeLists.txt→Reload project,否则改动不生效
main.c 文件名和内容要匹配 C 语言习惯
CLion 创建 C Executable 时,默认生成的是 main.cpp,这是个坑。你得手动删掉它,新建一个 main.c(右键 src 目录 → New → C File),否则 CMake 会尝试用 C++ 编译器链接 .c 文件,报 undefined reference to 'main'。
新建的 main.c 内容建议用标准 C 写法:
#include <stdio.h>
int main(void) {
printf("Hello, world!\n");
return 0;
}
-
void参数列表比空括号更符合 C 标准(int main()在 C 中表示参数未指定,不是无参) - 别用
#include <iostream>或std::cout,那是 C++ - 保存后看右上角运行按钮是否变成绿色三角——没变说明 CMake 没识别到
main.c,检查add_executable是否指向了正确文件名
运行前务必确认编译器已正确绑定
CLion 不自带编译器,Windows 上常见问题是 MinGW 没配进 PATH,或 CLion 没选中它。点 File → Settings → Build, Execution, Deployment → Toolchains,确认 Environment 下显示的 MinGW 路径存在且包含 gcc.exe(比如 C:\mingw64\bin\gcc.exe)。
如果显示 No toolchain defined 或路径红字报错:
- 先去命令行执行
gcc --version,验证 MinGW 真的装好了且在 PATH 里 - 如果没输出,把 MinGW 的
bin目录加进系统环境变量 PATH,重启 CLion - 如果已存在但 CLion 没识别,点击
+手动添加 Toolchain,Type 选MinGW,Path 填到bin目录(不是安装根目录) - 改完后等右下角弹出 “CMake files have changed, reload project?”,点
Reload project
最易被忽略的一点:CLion 的 Toolchain 设置是按项目存储的,换一个项目得重新检查——哪怕你刚在一个项目里配好了,新建项目时它依然可能回退到未配置状态。


















