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

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

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