shared c constants in a header

前端 未结 4 1211
庸人自扰
庸人自扰 2021-01-01 10:23

I want to share certain C string constants across multiple c files. The constants span multiple lines for readability:

const char *QUERY = \"SELECT a,b,c \"
         


        
相关标签:
4条回答
  • 2021-01-01 10:49

    In some .c file, write what you've written. In the appropriate .h file, write

    extern const char* QUERY; //just declaration
    

    Include the .h file wherever you need the constant

    No other good way :) HTH

    0 讨论(0)
  • 2021-01-01 10:51

    You could use static consts, to all intents and purposes your effect will be achieved.

    myext.h:

    #ifndef _MYEXT_H
    #define _MYEXT_H
    static const int myx = 245;
    static const unsigned long int myy = 45678;
    static const double myz = 3.14;
    #endif
    

    myfunc.h:

    #ifndef MYFUNC_H
    #define MYFUNC_H
    void myfunc(void);
    #endif
    

    myfunc.c:

    #include "myext.h"
    #include "myfunc.h"
    #include <stdio.h>
    
    void myfunc(void)
    {
        printf("%d\t%lu\t%f\n", myx, myy, myz);
    }
    

    myext.c:

    #include "myext.h"
    #include "myfunc.h"
    #include <stdio.h>
    
    int main()
    {
        printf("%d\t%lu\t%f\n", myx, myy, myz);
        myfunc();
        return 0;
    }
    
    0 讨论(0)
  • 2021-01-01 11:03

    You can simply #define them separate

    #define QUERY1 "SELECT a,b,c "
    #define QUERY2 "FROM table..."
    

    and then join them in one definition

    #define QUERY QUERY1 QUERY2
    
    0 讨论(0)
  • 2021-01-01 11:07

    There are several ways

    • place your variables in one file, declare them extern in the header and include that header where needed
    • consider using some external tool to append '\' at the end of your macro definition
    • overcome your laziness and declare your variables as extern in all your files
    0 讨论(0)
提交回复
热议问题