前回の質問(http://www.play21.jp/board/formz.cgi?ac ... 1278506084oca 関数を教えていただきました。
調べてみると「スタックにメモリを割り当て」る関数らしいんですが、スタックに動的に割り当てられるならCの配列が静的配列である必要がないように思うのですが…。
C言語の配列はなぜ静的配列?
Re:C言語の配列はなぜ静的配列?
_allocaは標準ライブラリの中に入っていなかったと思うのですが、、、
それは置いといて、
C99は確か言語仕様でautoで動的(実行時決定)な配列を使えたはずです。
それは置いといて、
C99は確か言語仕様でautoで動的(実行時決定)な配列を使えたはずです。
Re:C言語の配列はなぜ静的配列?
>> _allocaは標準ライブラリの中に入っていなかったと思うのですが、、、
ドキュメントには _alloca(CRT) とあるのですが、
CRT = Cランタイムライブラリ = 標準Cライブラリ ではないのでしょうか?
自分の理解が足りないだけのような気もしますが…
>> C99は確か言語仕様でautoで動的(実行時決定)な配列を使えたはずです。
調べてみましたがよくわかりませんでした...orz
わざわざ答えてもらったのにすみません。
でも言語仕様で動的配列を使えるとのことですので、疑問は解決できました。
どうもありがとうございました!
ドキュメントには _alloca(CRT) とあるのですが、
CRT = Cランタイムライブラリ = 標準Cライブラリ ではないのでしょうか?
自分の理解が足りないだけのような気もしますが…
>> C99は確か言語仕様でautoで動的(実行時決定)な配列を使えたはずです。
調べてみましたがよくわかりませんでした...orz
わざわざ答えてもらったのにすみません。
でも言語仕様で動的配列を使えるとのことですので、疑問は解決できました。
どうもありがとうございました!
Re:C言語の配列はなぜ静的配列?
補足です。
_allocaはコンパイラの開発会社(この場合はマイクロソフト)が勝手に用意した関数です。
Cの標準ライブラリにははいっていません。
C99はC言語の最新の規格で、現在対応しているコンパイラと対応していないコンパイラが
あるので気をつけてください。
古い規格の場合動的配列はmalloc(),free()で扱うしかないですね。
http://seclan.dll.jp/c99d/c99d04.htm#dt19990719
_allocaはコンパイラの開発会社(この場合はマイクロソフト)が勝手に用意した関数です。
Cの標準ライブラリにははいっていません。
C99はC言語の最新の規格で、現在対応しているコンパイラと対応していないコンパイラが
あるので気をつけてください。
古い規格の場合動的配列はmalloc(),free()で扱うしかないですね。
http://seclan.dll.jp/c99d/c99d04.htm#dt19990719
Re:C言語の配列はなぜ静的配列?
組木紙織さん、ご指摘ありがとうございました。
自分の理解不足でご迷惑をおかけしました。
そういえば、 _ がつく関数は標準規格のではないと聞いたことがある気がします。
それであってるんでしょうか?
自分の理解不足でご迷惑をおかけしました。
そういえば、 _ がつく関数は標準規格のではないと聞いたことがある気がします。
それであってるんでしょうか?
画像が表示されません
以下のコードで画像を表示できません。解決方法をお願いします。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; // ウインドウモードに変更
if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了
LoadGraphScreen( 0 , 0 , "char.png" , TRUE ) ;
WaitKey() ; // 結果を見るためにキー待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; // ウインドウモードに変更
if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了
LoadGraphScreen( 0 , 0 , "char.png" , TRUE ) ;
WaitKey() ; // 結果を見るためにキー待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}