C言語初心者です。どうがご教授お願いします。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
みつ
記事: 9
登録日時: 11年前

C言語初心者です。どうがご教授お願いします。

#1

投稿記事 by みつ » 11年前

現在、C++にて記述されたソースの解析を行っています。
初心者なものでC言語入門を参照しながら行っていますが
最初でつまづいてしまtっているのでご教授願願います。

※不明点

コード:

#ifndef __FORMAT_A__
#define __FORMAT_A__
#ifdef __cplusplus
extern "C"
{
 #endif
 extern int A_RETURN(
    int* iPara1
    ,int* iPara2
    ,double* dPara3
    ,const double dPara4
 );
 #ifdef __cplusplus
}
#endif 
#endif 
 
A_RETURNでは整数に変換?を行っているのでしょうか?
int*、double*の意味がどうも分かりません。

どうかよろしくお願いします。

アバター
usao
記事: 1889
登録日時: 12年前
連絡を取る:

Re: C言語初心者です。どうがご教授お願いします。

#2

投稿記事 by usao » 11年前

>A_RETURNでは整数に変換?を行っているのでしょうか?

関数の宣言だけ見ても この関数の動作はわかりません.
動作が知りたいのであれば,実装コードの方を読むしかないと思います.

>int*、double*の意味がどうも分かりません。

これは ポインタ ですね.
参照されている「C言語入門」にもきっと書かれています.

みつ
記事: 9
登録日時: 11年前

Re: C言語初心者です。どうがご教授お願いします。

#3

投稿記事 by みつ » 11年前

usaoさん、早々の回答ありがとうございます。

A_RETURNはxxxx.hファイルに記載されていて
実装コードはxxxx.cに記載されていました。
関数の宣言のみをxxxx.hファイルで行っているのですね。
VBと違いとりかかりにくいです。もっと勉強します。

ポインタについてC言語入門に記載されていましたので
確認します。

アバター
usao
記事: 1889
登録日時: 12年前
連絡を取る:

Re: C言語初心者です。どうがご教授お願いします。

#4

投稿記事 by usao » 11年前

ところで,どうしても自分で解読しなければならないのでしょうか…
まぁそこらへんは事情次第ですが,
C初心者 という状態で C++のコードを解析 というのはとても辛そうです.
(その関数が何をするものなのか?という情報すらもないようですし)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: C言語初心者です。どうがご教授お願いします。

#5

投稿記事 by softya(ソフト屋) » 11年前

> C初心者 という状態で C++のコードを解析 というのはとても辛そうです.

extern "C"で宣言されている関数がC言語の文法の範囲で記載されているのなら、C言語の知識でなんとかなりますね。
【補足】
#ifdef __cplusplusとわざわざ記載されているので、C++じゃなくてもコンパイルが通る仕様だと思います。
つまりC++って関係ないのでは。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

N.R

Re: C言語初心者です。どうがご教授お願いします。

#6

投稿記事 by N.R » 11年前

みつ さんが書きました: A_RETURNはxxxx.hファイルに記載されていて
実装コードはxxxx.cに記載されていました。
関数の宣言のみをxxxx.hファイルで行っているのですね。
プログラムは基本上から順に解釈されるので

コード:

↓A_RETURN を呼べ... A_RETURN ってどれ?
↓
↓A_RETURN という関数があるよ
となってしまいます。
なのでプロトタイプ宣言して

コード:

↓A_RETURN という関数がどこかにあるからね
↓
↓A_RETURN を呼べ... A_RETURN はどこかにあるはずだね
↓
↓A_RETURN という関数があるよ
と解釈できるようにしているのですね。
「どこかにあるからね~」と言っておいて作っていないと今度はリンカーエラーが出るわけです。

アバター
usao
記事: 1889
登録日時: 12年前
連絡を取る:

Re: C言語初心者です。どうがご教授お願いします。

#7

投稿記事 by usao » 11年前

>#ifdef __cplusplusとわざわざ記載されているので、C++じゃなくてもコンパイルが通る仕様だと思います。
>つまりC++って関係ないのでは。

プログラムにCの部分とC++の部分があって
A.c と B.cpp の両方からこのヘッダをincludeして使うとかいうことではないでしょうか.

>実装コードはxxxx.cに記載されていました。
とのことなので,少なくともA_RETURN関数はCっぽいですね.

みつ
記事: 9
登録日時: 11年前

Re: C言語初心者です。どうがご教授お願いします。

#8

投稿記事 by みつ » 11年前

たくさんの回答ありがとうございます。

>ところで,どうしても自分で解読しなければならないのでしょうか…
>まぁそこらへんは事情次第ですが,
>C初心者 という状態で C++のコードを解析 というのはとても辛そうです.
>(その関数が何をするものなのか?という情報すらもないようですし)
C++のコード解析をしてC#に変換するという作業をしています。
ただC++もC#も初心者なのでとても辛く理解するのに時間がかかります。

>とのことなので,少なくともA_RETURN関数はCっぽいですね.
C++で作成したがコードはCで記述されていると言われました。

みつ
記事: 9
登録日時: 11年前

Re: C言語初心者です。どうがご教授お願いします。

#9

投稿記事 by みつ » 11年前

追加で質問にて申し訳ありませんがどうかご教授願います。

コード:

int d_to_dm(
    int* sign
    ,int* dm_d
    ,double* dm_m
    ,const double d
){
    /* 処理・・・・ */
    
    return 0;
}
C言語のconstをC#に記載するとエラーとなってしまいます。
(型が必要です)
C#では何か代用して使用できるのでしょうか?

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: C言語初心者です。どうがご教授お願いします。

#10

投稿記事 by みけCAT » 11年前

みつ さんが書きました:C言語のconstをC#に記載するとエラーとなってしまいます。
(型が必要です)
C#では何か代用して使用できるのでしょうか?
関数の引数にはできないかもしれませんが、const自体は普通に使えそうです。
const (C# リファレンス)
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: C言語初心者です。どうがご教授お願いします。

#11

投稿記事 by softya(ソフト屋) » 11年前

>C++のコード解析をしてC#に変換するという作業をしています。
>ただC++もC#も初心者なのでとても辛く理解するのに時間がかかります。

そもそもC#では参照が使えるのでポインタは必要ないです。

> C#では何か代用して使用できるのでしょうか?

たしか使えないはずです。
【補足】
みけCATさんの書いている通り、引数には使えません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ISLe
記事: 2650
登録日時: 14年前
連絡を取る:

Re: C言語初心者です。どうがご教授お願いします。

#12

投稿記事 by ISLe » 11年前

こういうときこそC++/CLIを利用するべきではないのでしょうかね。

みつ
記事: 9
登録日時: 11年前

Re: C言語初心者です。どうがご教授お願いします。

#13

投稿記事 by みつ » 11年前

みけCATさん、softya(ソフト屋) さん、ISLe さん
回答ありがとうございます。

>関数の引数にはできないかもしれませんが、const自体は普通に使えそうです。
調べたところ関数の引数にはどうにも使えませんでした。

>そもそもC#では参照が使えるのでポインタは必要ないです。
ご教授ありがとうございます。
参照型として宣言して使用してみます。

閉鎖

“C言語何でも質問掲示板” へ戻る