Поскольку вы включаете test2.cpp в test-1.cpp, фактический код, который видит компилятор, выглядит так:
static int a;
void fonction() {
}
static int a;
int main() {
}
Отсюда и переопределение.
Команда препроцессора #include
включает файл в текстовом формате.
В действительности вы хотите, чтобы оба файла test-1.cpp и test-2.cpp были включены в проект Visual Studio.
Youхочу это:
test-1.cpp
#include "test-2.h"
static int a;
int main() {
fonction();
}
test-2.cpp
#include "test-2.h"
static int a;
void fonction() {
}
test-2.h
void fonction();