2017-05-26 4 views
3

Im folgenden Beispiel:Verhalten von extern const char * in C++

file1.c:

#include <stdlib.h> 
#include <stdio.h> 

extern const char* szVers; 
extern const int iTest; 
extern const char cText[]; 

int main(int argc, char** argv) 
{ 
    printf("Result = %s - %d - %c\n", szVers, iTest, cText[0]); 
    return (0); 
} 

file2.c

const char* szVers = "Version 1.0"; 
const int iTest = 6; 
const char cText[] = "ABCD"; 

Wenn ich die Quellen kompilieren, habe ich die folgende Fehler:

$ g++ -o test file1.c file2.c 
/tmp/cctVd57Y.o: In function `main': 
file1.c:(.text+0x12): undefined reference to `cText' 
file1.c:(.text+0x1b): undefined reference to `iTest' 
collect2: ld returned 1 exit status 

Ich weiß das in C + + const bedeutet interne Verknüpfung, aber warum gibt es keinen undefinierten Referenzfehler für szVers?

+0

es helfen kann https://stackoverflow.com/questions/14977058/extern -const-char-const-einige-Konstante-geben-mir-Linker-Fehler –

+0

@ HoàngĐăng: Wörtlich das Gegenteil –

Antwort

0

Aktualisieren Sie Ihren Compiler. Mit 7.1.0 GCC kann ich reproduzieren, was man bekommt, aber mit der neueren Version bekomme ich einen Fehler für alle drei Variablen:

enter image description here

Verwandte Themen