C 如何使用#define从文本文件定义变量值?

C 如何使用#define从文本文件定义变量值?,c,variables,global-variables,C,Variables,Global Variables,我在代码中的某个地方使用了int-array[L]。我指定数组长度:#定义L64。一切都好。但是,如果我想在(外部)文本文件中而不是在代码中指定此值,该怎么办?如何将文本文件读入#define 但是,如果我想在(外部)文本文件中而不是在代码中指定此值,该怎么办 我可以想到两种方法来设置宏的值 用代码定义它。文本文件不能用于此目的 在编译器中将其定义为命令行选项(-DL=64) 如果使用make,则可以在相应的Makefile中定义该选项 如果您使用IDE,则需要在IDE提供的各种设置中找出如何做

我在代码中的某个地方使用了
int-array[L]
。我指定数组长度:
#定义L64
。一切都好。但是,如果我想在(外部)文本文件中而不是在代码中指定此值,该怎么办?如何将文本文件读入#define

但是,如果我想在(外部)文本文件中而不是在代码中指定此值,该怎么办

我可以想到两种方法来设置宏的值

  • 用代码定义它。文本文件不能用于此目的

  • 在编译器中将其定义为命令行选项(
    -DL=64

    如果使用
    make
    ,则可以在相应的
    Makefile
    中定义该选项

    如果您使用IDE,则需要在IDE提供的各种设置中找出如何做到这一点

  • 但是,如果我想在(外部)文本文件中而不是在代码中指定此值,该怎么办

    我可以想到两种方法来设置宏的值

  • 用代码定义它。文本文件不能用于此目的

  • 在编译器中将其定义为命令行选项(
    -DL=64

    如果使用
    make
    ,则可以在相应的
    Makefile
    中定义该选项

    如果您使用IDE,则需要在IDE提供的各种设置中找出如何做到这一点


  • 读取文本文件,然后
    malloc
    数组:

    int *array; 
    int L; 
    int main(void)
    { 
        L = readLengthFromTextFile();
        array = malloc( L );
        if ( array == NULL ) {
            printf( "array allocation failed\n" );
            exit(1);
        }
    
        // use the array as if declared as:    int array[L];
    
        free( array );
    }
    

    读取文本文件,然后
    malloc
    数组:

    int *array; 
    int L; 
    int main(void)
    { 
        L = readLengthFromTextFile();
        array = malloc( L );
        if ( array == NULL ) {
            printf( "array allocation failed\n" );
            exit(1);
        }
    
        // use the array as if declared as:    int array[L];
    
        free( array );
    }
    

    我不建议在源代码之外定义宏值。如果你必须这样做,你必须以只读方式打开文件并解析文本文件以获得你的值。你的代码不会编译,因为L不会预先处理为一个整数。顺便说一下,头文件是一个外部文本文件。如果需要动态调整数组大小,则此操作将不起作用。大多数编译器都允许您在命令行上指定宏定义。通常是-D。因此,在Makefile中,您需要读取外部文件,并解析出L的值。然后将该值指定为-D编译器标志的参数。你很快就会成为Makefile大师。检查一下:我不建议在源代码之外定义宏值。如果你必须这样做,你必须以只读方式打开文件并解析文本文件以获得你的值。你的代码不会编译,因为L不会预先处理为一个整数。顺便说一下,头文件是一个外部文本文件。如果需要动态调整数组大小,则此操作将不起作用。大多数编译器都允许您在命令行上指定宏定义。通常是-D。因此,在Makefile中,您需要读取外部文件,并解析出L的值。然后将该值指定为-D编译器标志的参数。你很快就会成为Makefile大师。看看这个: