Я сделал 2 проекта, первый в C и второй в C++, оба работают с одинаковым поведением.статические и внешние глобальные переменные в C и C++
C Проект:
header.h
int varGlobal=7;
main.c
#include <stdio.h>
#include <stdlib.h>
#include "header.h"
void function(int i)
{
static int a=0;
a++;
int t=i;
i=varGlobal;
varGlobal=t;
printf("Call #%d:\ni=%d\nvarGlobal=%d\n\n",a,i,varGlobal,t);
}
int main() {
function(4);
function(6);
function(12);
return 0;
}
проект C++:
header.h
int varGlobal=7;
main.cpp
#include <iostream>
#include "header.h"
using namespace std;
void function(int i)
{
static int a=0;
int t=i;
a++;
i=varGlobal;
varGlobal=t;
cout<<"Call #"<<a<<":"<<endl<<"i="<<i<<endl<<"varGlobal="<<varGlobal<<endl<<endl;
}
int main() {
function(4);
function(6);
function(12);
return 0;
}
Я читал, что глобальные переменные ехЬегп по умолчанию и в C и статического по умолчанию в C++; так почему же работает код C++?
Я имею в виду int varGlobal = 7; такой же, как static int varGlobal = 7;, и если он статичен, то он может использоваться только в объявленном файле, не так ли?
Первое примечание содержание, 'include' просто скопировать пасты. Поэтому для примера с одним файлом его следует удалить, чтобы упростить. –