グローバル関数の定義 – プログラミング – Home

通知
すべてクリア

[解決済] グローバル関数の定義


絶望
 絶望
(@絶望)
ゲスト
結合: 12年前
投稿: 2
Topic starter  

Visual Studio Express 2012を使用している者です。

A.hファイルに

#pragma once

int a()
{
return 10;
}
と書き、CPPファイルに

#include stdafx.h

#include A.h

int _tmain(int argc, _TCHAR* argv[])
{
printf(%d\n,a());
return 0;
}

と書いてビルドしたところ、

error LNK1169:1つ以上の複数回定義されているシンボルが見つかりました。
error LNK2005:int__cdecl a(void)(?a@@YAHXZ)は既にA.objで定義されています。
error LNK2005:int__cdecl a(void)(?a@@YAHXZ)は既にA.objで定義されています。

というエラーが出ました。
関数a()は他のCPPファイルでも使用したいので、ヘッダーファイル内にグローバル関数
として置いたのですが、上手くいきません。

このような場合、どうしたらよいでしょうか。

お忙しいとは存じますが、宜しくお願いします。


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

A.hファイルに

#pragma once

int a();

A.cppファイルに

#include stdafx.h

#include A.h

int a()

{

return 10;

}

※ ヘッダに実装を書いてはならない。


返信引用
絶望
 絶望
(@絶望)
ゲスト
結合: 12年前
投稿: 2
Topic starter  

ご返答、ありがとうございます。
A.cppファイルを作り、そのなかで
a()の実装を書いたところ、ビルドが通り、
動作も確認しました。


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

----a.h----
inline int a()
{
return 10;
}
のように、インライン関数にしてしまう手もありますね。
関数の実体がexe内に複数存在しても支障の無い場合は使えます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました