Search code examples
cfor-loopheader

for loop errors, counter defined in header file


I wrote a simple program composed by three files (main.c, libreria_mia.c, libreria_mia.h):

// main.c
#include <stdio.h>
#include "libreria_mia.h"
int main()
{
    return 0;
}




// libreria_mia.h
struct  numeri{
    int n[100];
};
int i;



// libreria_mia.c
#include "libreria_mia.h"
for (i = 0; i < 100; i++){
    numeri.n[i] = 2;
}

The compiler gives me the following errors:

libreria_mia.c:5:1: error: expected identifier or ‘(’ before ‘for’
    5 | for (i = 0; i < 100; i++){
      | ^~~
libreria_mia.c:5:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘<’ token
    5 | for (i = 0; i < 100; i++){
      |               ^
libreria_mia.c:5:23: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘++’ token
    5 | for (i = 0; i < 100; i++){
      |                       ^~

How can i fix them?

Thank you in advance.


Solution

  • In C/C++ you can't declare variables in a header file that is included in multiple files.

    You have to declare variables in C file and declare extern in a header file:

    As an example:

    main.c

    int i;
    

    libreria_mia.h

    extern int i;
    

    then include this header file wherever you want to use the variable i.