前提・実現したいこと
ヘッダーファイルに外部変数を置きたいのですが
externの使い方がいまいちわかっていません。
externはどうやって使うのでしょうか?
発生している問題・エラーメッセージ
1>------ ビルド開始: プロジェクト: 練習extern, 構成: Debug Win32 ------
1>コンパイルしています...
1>stdafx.cpp
1>コンパイルしています...
1>練習extern.cpp
1>マニフェストをリソースにコンパイルしています...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>リンクしています...
1>練習extern.obj : error LNK2005: "int * size" (?size@@3PAHA) は既に stdafx.obj で定義されています。
1>C:\Users\user\Documents\Visual Studio 2008\Projects\練習extern\Debug\練習extern.exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。
1>ビルドログは "file://c:\Users\user\Documents\Visual Studio 2008\Projects\練習extern\練習extern\Debug\BuildLog.htm" に保存されました。
1>練習extern - エラー 2、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
該当のソースコード
c
1// 練習extern.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 2// 3 4#include "stdafx.h" 5 6 7int _tmain(int argc, _TCHAR* argv[]) 8{ 9 printf( "size:%d\n", size[0]); 10 11 return 0; 12} 13
// stdafx.h : 標準のシステム インクルード ファイルのインクルード ファイル、または // 参照回数が多く、かつあまり変更されない、プロジェクト専用のインクルード ファイル // を記述します。 // #pragma once #include "targetver.h" #include <stdio.h> #include <tchar.h> // TODO: プログラムに必要な追加ヘッダーをここで参照してください。 #ifdef EXT extern int size[1] = {32}; #else int size[1] = {32}; #endif #define EXT
変更後
c
1// 練習extern.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 2// 3 4#include "stdafx.h" 5#define EXT 6#include "hoge.h" 7 8 9int _tmain(int argc, _TCHAR* argv[]) 10{ 11 printf( "size:%d\n", size[0]); 12 13 hogehoge(); 14 15 return 0; 16} 17
c
1#include "stdafx.h" 2#include "hoge.h" 3 4 5void hogehoge() 6{ 7 printf( "size:%d\n", size[0] ); 8}
c
1// stdafx.h : 標準のシステム インクルード ファイルのインクルード ファイル、または 2// 参照回数が多く、かつあまり変更されない、プロジェクト専用のインクルード ファイル 3// を記述します。 4// 5 6#pragma once 7 8#include "targetver.h" 9 10#include <stdio.h> 11#include <tchar.h> 12 13 14 15// TODO: プログラムに必要な追加ヘッダーをここで参照してください。 16 17void hogehoge();
c
1 2 3#ifdef EXT 4int size[1] = {32}; 5#else 6extern int size[1]; 7#endif
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/10 02:32
2021/10/10 02:43
2021/10/10 02:48