こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Visual Studio 6.0でビルド可能だったものがVisual C++ 2008 Express Editionでerror C2664発生

お世話になります。
Visual Studio 6.0でビルド可能だったものがVisual C++ 2008 Express EditionでエラーC2664を出してしまい解決法を模索しております。
同様のトラブルを調べてみましたが、例えば「文字セット」を「マルチ バイト文字セットを使用する」にしても改善されませんでした。

void time_sobi(int sobi_time){
long time1,time2 ;
time(&time1);
time2=time1;
while(labs(time1-time2)<sobi_time){
time(&time1);
}
}

上述の部分で:
s\jun\デスクトップ\hight\hight.cpp(112) : error C2664: 'time' : 1 番目の引数を 'long *' から 'time_t *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>c:\documents and settings\jun\デスクトップ\hight\hight.cpp(115) : error C2664: 'time' : 1 番目の引数を 'long *' から 'time_t *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
とメッセージが出て、該当する部分はそれぞれ3,6行目のtime(&time1);です。

ご教示くださる方いらっしゃいましたら宜しくお願い致します。

投稿日時 - 2009-01-12 18:36:14

QNo.4624858

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

そもそも、何をするプログラムなん??
何をもって、動かないと判断してるの??
エラーダイアログが出るの??
実行タイミングがおかしいの??
GUIアプリなの?コマンドラインアプリなの??
んーなもん、
「パソコンの電源入れたけど、動かない」って言われたのと同じ状況。
「6.0の時と同様の動作をしない」
で?6.0の時はどういう具合に動作をしていたのでしょうか。
かなり大雑把な質問なので、もう少し的を絞りましょう。
コンパイルが終わったなら、プロジェクトディレクトリの
debugという名前のフォルダに実行ファイル(.exeファイル)ができていると思います。
それを直接実行してみたら、どうでしょうか。

投稿日時 - 2009-01-13 13:15:23

ANo.2

「ちゃんと動かない」って言われても, 「あなたがどのような動作を期待したのか」「実際にどのような動作になったのか」がわからないと判断できない.

投稿日時 - 2009-01-12 22:21:05

補足

大変失礼致しました。

「あなたがどのような動作を期待したのか」-->exeファイルが作成され、実行可能となることを期待

「実際にどのような動作になったのか」-->Visual Studio 6.0の時はビルド(F7)した後、実行(Ctrl + F5)で作成された実行ファイル(.exe)が起動していたが、2008 Express Editionではデバッグの開始が相当しているらしく、デバッグ開始を行うとexeファイルが起動するが6.0の時と同様の動作をしない

判断できますでしょうか。宜しくお願い致します。

投稿日時 - 2009-01-13 07:43:55

VC++2005からtime_tの既定は64ビットです
_abs64を使って64ビットで処理するか、_time32を使って32ビットで処理してください

参考URL:http://msdn.microsoft.com/ja-jp/library/1f4c8f33.aspx

投稿日時 - 2009-01-12 18:44:05

補足

すみません、補足です。
StdAfx.h内で#include <time.h>の宣言がありました。
失礼しました。

コンパイルはうまく行ったのですが、exeファイルの実行がちゃんとなされない状況です。
Visual Studio 6.0の時はビルド(F7)した後、実行(Ctrl + F5)で作成された実行ファイル(.exe)が起動していたのですが、2008 Express Editionでは起動はするのですが、ちゃんと動きません。

これでは情報不足かも知れませんが、何かアドバイス・コメントあれば宜しくお願いします。

投稿日時 - 2009-01-12 22:11:09

お礼

dumm様;

さっそくのご回答ありがとうございます。以下のように_time32に書き換えたらビルドできました。

void time_sobi(int sobi_time){
long time1,time2 ;
_time32(&time1);
time2=time1;
while(labs(time1-time2)<sobi_time){
_time32(&time1);
}
}

自分は普段Cを使っていないのでよくわからず申し訳ございませんが、time_tを使う場合
#include <time.h>
の宣言が必要なのではないでしょうか?このcppファイルには
#include "StdAfx.h"
#include <Windows.h>
#include "Decl-32.h"
の宣言のみです。試しに#include <time.h>の有無で比較してみましたが、関係なくビルドできるようです。

投稿日時 - 2009-01-12 19:11:21

あなたにオススメの質問