0

次のコードを書きました

head.h

int i = 0;

サンプル.cpp

#include <stdio.h>
#include "head.h"

extern int i;
i = 20;

int main() {
    printf("%d \n",i);
    return 0;
}

sample.cpp をコンパイルすると、コンパイラは次のエラーをスローします。

sample.c:5:1: warning: data definition has no type or storage class [enabled by default]
sample.c:5:1: error: redefinition of ‘i’
head.h:1:5: note: previous definition of ‘i’ was here
4

1 に答える 1

5

逆に、extern宣言はヘッダーにあり、定義は実装ファイルにあり、一度だけ定義する必要があります。

//head.h
extern int i;


//sample.cpp
#include <stdio.h>
#include "head.h"

int i = 20;

int main() {
    printf("%d \n",i);
    return 0;
}

変数は何度でも宣言できますが、定義は一意である必要があります。

于 2012-09-11T17:26:58.100 に答える