Site Tools


extern

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

extern [2013/04/06 03:14]
konovalov created
extern [2013/04/06 03:42] (current)
konovalov
Line 2: Line 2:
  
 == доступ к переменной другого файла == == доступ к переменной другого файла ==
-A.cpp +main.cpp 
-  int i = 10; +    #include "B.h" 
-  ​#include "B.cpp"; +     
 +    int i = 13
 +     
 +    int main(int argc, char *argv[]) 
 +    { 
 +        foo(); 
 +        qDebug() << i; 
 +        return 1;//​a.exec();​ 
 +    } 
 +B.h 
 +    int foo();
 B.cpp B.cpp
-  ​extern i; +    ​extern ​int i; 
-  i = 11;+    // extern int i = 99//​является ошибкой. Совмещать extern с присвоением,​ запрещено. 
 +     
 +    int foo(){ 
 +        qDebug() << i; 
 +        i = 98; 
 +        return 1; 
 +    } 
 + 
 +вывод:​ 
 +  13  
 +  98 
  
 Примечание:​ Даже без extern, глобальными переменными с одинаковым именем в разных файлах,​ воспользоваться не получится - не компилятор,​ а линковщик выдаст ошибку. Примечание:​ Даже без extern, глобальными переменными с одинаковым именем в разных файлах,​ воспользоваться не получится - не компилятор,​ а линковщик выдаст ошибку.
-== досутп к функции другого файла == 
-A.cpp 
-  int func(){ 
-    return 10;  ​ 
-  } 
-  #include <​B.cpp>​ 
  
 +== досутп к функции другого файла ==
 +main.cpp
 +    //include отсутствует,​ линковщик линкует с B.cpp
 +    ​
 +    void foo();
 +    //extern void foo(); // оба варианта объявляения являются корректными.
 +    ​
 +    int main(int argc, char *argv[])
 +    {
 +        foo();
 +        return 1;//​a.exec();​
 +    }
 B.cpp B.cpp
-  int func(); +    void foo(){ 
-  //​extern int func(); // оба объявления являются корректными. +        ​qDebug() << "foo from B.cpp"
-  int i = func;+    }
  
 ==== Пример получения ошибки ==== ==== Пример получения ошибки ====
extern.txt · Last modified: 2013/04/06 03:42 by konovalov

Page Tools