How to Declare Global Variable in C?

How to Declare Global Variable in C?

I am starting to use C. I have problem to define global variable. E.g. platformID is used in install.c. I declared in main.c but still I got error :

install.c|64|error: 'platformID' undeclared (first use in this function)

main.c:

#ifdef __APPLE__
#include <OpenCL/opencl.h>
#else
#include <CL/cl.h>
#endif

 cl_int err;//the openCL error code/s
 cl_platform_id platformID;//will hold the ID of the openCL available platform
 cl_uint platformsN;//will hold the number of openCL available platforms on the machine
 cl_device_id deviceID;//will hold the ID of the openCL device
 cl_uint devicesN; //will hold the number of OpenCL devices in the system

#include "include/types.h"
#include "include/gaussian.h"
#include "include/args.h"
#include "include/files.h"
#include "refu/Time/rfc_timer.h"
#include <stdio.h>

...

install.c

#include "include/types.h"
#include "include/gaussian.h"
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

#include <sys/types.h> // mkdir
#include <sys/stat.h> // mkdir

#ifdef __APPLE__
#include <OpenCL/opencl.h>
#else
#include <CL/cl.h>
#endif

#define MAX_SOURCE_SIZE (1048576) //1 MB
#define MAX_LOG_SIZE    (1048576) //1 MB

// Install: build kernel
bool buildKernels(char ** path,FILES * files, int count )
{

    int c; // number of file

    if(clGetPlatformIDs(1, &platformID, &platformsN) != CL_SUCCESS)
    {
        printf("Could not get the OpenCL Platform IDs\n");
        return false;
    }
    if(clGetDeviceIDs(platformID, CL_DEVICE_TYPE_DEFAULT, 1,&deviceID, &devicesN) != CL_SUCCESS)
    {
        printf("Could not get the system's OpenCL device\n");
        return false;
    }

...

How to declare the global variable so it is visible in the included file? Can you help to fix it?

4 Answers

/* a.h */
extern int globali;  /* Declaration for compilation */
/* Visible here */

Later make sure you define in (exactly) one of the compilation units.

/* something.c */
int globali = 42;  /* Definition for linking */
1

Use extern before using that variable in the install.c. After that compile the both the files at same time.

extern cl_platform_id platformID;

Add one line

extern cl_platform_id platformID;

before referring to platformID in install.c.

add this in install.c before using that variable

 // external declaration for compilation
 extern cl_platform_id platformID; // It is defined in main.c file

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

David Miller
Author

David Miller

David Miller brings 15 years of experience in global economics, personal finance strategy, and market dynamics. He specializes in turning complex economic trends into actionable insights for everyday readers.