• 字符串数组用头文件初始化,enum包含头文件


     比较适用于大量参数的数组,下标获取值(提升代码效率)

    两个头文件:

    List.h :

    //List.h
    "aaa",
    "bbb",
    "ccc",

    List2.h

    //List2.h
    aaa,
    bbb,
    ccc,

    初始化enum:

    #ifndef TTT_H_
    #define TTT_H_
    enum {
    #include "List2.h"
        NR_OF_OBJECT_COMMANDS
    };
    #endif /* TTT_H_ */

    main.c:

    #include <stdio.h>
    #include "ttt.h"
    char *objectMnemonic[] = {
    #include "List.h"
    };
    int main()
    {
        printf("aaa = %d
    ",aaa);  // 枚举
        printf("NR_OF_OBJECT_COMMANDS = %d
    ",NR_OF_OBJECT_COMMANDS); // 枚举
        printf("objectMnemonic = %s
    ",objectMnemonic[1]);   // 字符串数组下标 获取 字符串
       printf("objectMnemonic = %s ",objectMnemonic[aaa]); // 下标是枚举,获取对应字符串,这才是核心
    // 还可以应用到多个字符串和对应的值(类似c++的map),比如obj[one] = 1;(这个数组可以手动初始化)
    return 0; }

     gcc 版本 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)

    Console:

    aaa = 0
    NR_OF_OBJECT_COMMANDS = 3
    objectMnemonic = bbb
    objectMnemonic = aaa              

    疑问1:我把List.h 重命名为List.c   头文件也包含改为List.c 

    不知道为什么报错:

    gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"List.d" -MT"List.d" -o "List.o" "../List.c"
    ../List.c:2:1: error: expected identifier or ‘(’ before string constant
    "aaa",
    ^
    make: *** [List.o] Error 1

    疑问2: List2.h 改为 List2.c  也会报错,不知道为什么。

    如下:

    gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"List2.d" -MT"List2.d" -o "List2.o" "../List2.c"
    ../List2.c:2:1: warning: data definition has no type or storage class [enabled by default]
    aaa,
    ^
    ../List2.c:2:1: warning: type defaults to ‘int’ in declaration of ‘aaa’ [-Wimplicit-int]
    ../List2.c:3:1: warning: type defaults to ‘int’ in declaration of ‘bbb’ [-Wimplicit-int]
    bbb,
    ^
    ../List2.c:4:1: warning: type defaults to ‘int’ in declaration of ‘ccc’ [-Wimplicit-int]
    ccc,
    ^
    ../List2.c:4:1: error: expected identifier or ‘(’ at end of input
    make: *** [List2.o] Error 1

    欢迎交流,分享。

  • 相关阅读:
    环境部署(二):Linux下安装jenkins
    环境部署(一):Linux下安装JDK
    jenkins简单安装及配置(Windows环境)
    python相关资料链接
    性能测试相关资料链接
    管理篇:测试Leader应该做哪些事
    进阶篇:软件测试工程师的岗位职责
    基础篇:如何做一名专业的软件测试工程师
    python:面向对象编程之Zope.interface安装使用
    Django:Python3.6.2+Django2.0配置MySQL
  • 原文地址:https://www.cnblogs.com/csun/p/6212571.html
Copyright © 2020-2023  润新知