статическая переменная, за которой следует extern в том же файле - PullRequest
0 голосов
/ 24 мая 2019

Следующий фрагмент кода компилируется и выполняется нормально. Что именно означает выражение extern int a после static int a. Обратите внимание, что если я напишу static int a после extern int a, компилятор выдаст ошибку как tests.cpp:6: error: a was declared extern and later static

#include<iostream>
//#include "testh.h"
using namespace std;

static int a;
extern int a;
int main()
{
        int a;
        a=3;
        cout<<a<<endl;
        cout<<::a<<endl;
        return 0;
}

1 Ответ

2 голосов
/ 24 мая 2019

Вы можете объявить переменную static затем extern, но не extern затем static. В результате глобальная a все еще имеет внутреннюю связь. Существует очень похожий пример (с использованием b в качестве имени переменной) в стандартном документе языка, раздел [dcl.stc], в котором говорится это.

...