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.
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.