美文网首页
C入门系列(一)基础

C入门系列(一)基础

作者: RabbitMask | 来源:发表于2020-12-31 00:41 被阅读0次

    因为工作需要,重新来过一遍C吧,不过既然要温故而知新,我们来个尽可能不一样的平台吧~
    本系列入门教程环境:MacOS + GCC ,IDE 选择Jetbrains全家桶Clion,借助Cmake完成相关构建维护。


    Linux/mac 通常自带gcc环境,如果是win的话大家看自己习惯吧,原则上编译器VS原生的MSVC更稳定些,但MinGW等依然是成熟的替代方案。

    rabbitmask@promote ~ % gcc -v
    Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/c++/4.2.1
    Apple clang version 12.0.0 (clang-1200.0.31.1)
    Target: x86_64-apple-darwin19.6.0
    Thread model: posix
    InstalledDir: /Library/Developer/CommandLineTools/usr/bin
    

    万物入门:Hello,World!

    #include <stdio.h>
    
    int main() {
        printf("Hello, World!\n");
        return 0;
    }
    
    rabbitmask@promote demo % gcc main.c 
    rabbitmask@promote demo % ls
    CMakeLists.txt          a.out                   cmake-build-debug       main.c
    rabbitmask@promote demo % ./a.out 
    Hello, World!
    

    gcc [源文件名] -o [目标文件名]
    gcc 命令如果不指定目标文件名时默认生成的可执行文件名为 a.out(linux) 或 a.exe(windows)。


    Clion操作

    配置编译器:

    配置运行/调试首选项

    ^ + R : Run
    ^ + D : DeBug

    默认是编译完成后自动运行的,当然也可以进入默认配置路径手动运行:

    rabbitmask@promote demo % cd cmake-build-debug 
    rabbitmask@promote cmake-build-debug % ls
    CMakeCache.txt          CMakeFiles              Makefile                Testing                 ccl.c                   cmake_install.cmake     demo                    demo.cbp
    rabbitmask@promote cmake-build-debug % ./demo 
    Hello, World!
    

    其中的默认路径,来自于Makefile中的相关默认配置:

    # The top-level source directory on which CMake was run.
    CMAKE_SOURCE_DIR = /Users/rabbitmask/Desktop/SourceCode/C/demo
    
    # The top-level build directory on which CMake was run.
    CMAKE_BINARY_DIR = /Users/rabbitmask/Desktop/SourceCode/C/demo/cmake-build-debug
    

    作为初章,我们不做过多展开,仅简单了解下类Unix环境下的GCC编译和Clion与Cmake的简单使用。


    C90 / C99 / C11标准

    在以往VS的使用过程中,一直没有太留意C语言标准对代码的影响,但既然Clion把这个问题抛出来了,那我们在入门系列的开始还是简单提及下。

    C90 习惯上也会有称C89,因为是ISO在1990年批准了 ANSI在1989年提出的ANSI C(C89) 。而C99和C11分别对应1999年和2011年。
    C99 标准新增特性:内联函数(inline functions)、可变长度的数组、灵活的数组成员(用于结构体)、复合字面量、指定成员的初始化器、对IEEE754浮点数改进、支持不定参数个数的宏定义,在数据类型上增加了 long long int 以及复数类型等。
    C11标准新增特性:字节对齐说明符、泛型机制(generic selection)、对多线程的支持、静态断言、原子操作以及对 Unicode 的支持等。

    撇开这些对于对于新手并不友好的概念暂且不谈,其实随着版本更迭也会带来很多经常使用的特性。如类似java等语言的单行注释语法//,此语法在C99标准才开始引入,再比如无return函数定义,void main(),在C99标准以前是允许main()这种语法作为等价存在的。不过讲到这里啦,顺便提一嘴,C标准中从未出现过void main()main()的语法标准,只有int main(void)int main(int argc,char *argv[])两种标准,但编译器却容忍啦void main()的存在,至于什么是对,什么是错,我们就不在这个入门系列探讨这么绅士的问题啦,我们能做的就是接受合理的标准,保持优雅的代码风格。

    so,本系列教程将按照C11标准进行学习。

    相关文章

      网友评论

          本文标题:C入门系列(一)基础

          本文链接:https://www.haomeiwen.com/subject/jkkcoktx.html