[解決済み] メモリ確保時に「イニシャライザ要素が定数でない」というエラーが発生する。
2022-03-04 12:48:03
質問
1 #include<stdio.h>
2 #include<malloc.h>
3
4 typedef struct node_t{
5 int i;
6 struct node_t* link;
7 }node;
8
9 node* head = (node *)malloc(sizeof(node));
10
11 if(head == NULL){
12 printf("\n malloc for head node failed! \n");
13 }
14
15 int main(){
16 int i = 10;
17 node* temp = NULL;
18 temp = (node *)malloc(sizeof(node));
19 if(temp == NULL){
20 printf("\n malloc for temp node failed! \n");
21 }
22 else{
23 while(i<=10){
24 ;
25 }
26 }
27 return 0;
28 }
コンパイルエラーです。
linked.c:9:1: error: initializer element is not constant
linked.c:11:1: error: expected identifier or ‘(’ before ‘if’
簡単なリンクリストのプログラムに挑戦しています。まだ完全に完成していません。コンパイルエラーになるんです。なぜこうなるのか理解できませんでした。
どうすればいいですか?
を定義しているので
head
基本的には、コンパイラやリンカは実行ファイルにそのイニシャライザのための領域を確保し、イニシャライザをその領域に書き込んで完了することができるはずです。を呼び出すための規定はありません。
malloc
初期化の際には、上記のように
main
(から呼び出すもの)。
main
).
#include <stdlib.h>
void init() {
head = malloc(sizeof(node));
}
int main() {
init();
// ...
}
この場合、あなたが持っているコードは
main
を実際に使用することはありません。
head
とはいえ、上記はすべて省略しても問題ないでしょう。
関連
-
[解決済み】constで変数を初期化しようとすると「initializerの要素が定数でない」というエラーが発生する。
-
[解決済み】Valgrind - strcpyのサイズ1の無効な書き込み
-
[解決済み】警告。この関数ではXが初期化されていない状態で使用される可能性があります。
-
[解決済み】ヒープ割り当てで初期化されていない値が作成された
-
[解決済み】EAGAINとはどういう意味ですか?
-
[解決済み] char pointers: 'char*' から 'char' への無効な変換?
-
[解決済み】0LLや0x0ULの意味は何ですか?
-
[解決済み】Linuxソケットのwrite()でBad File Descriptorが発生するC
-
[解決済み] Cプリプロセッサはなぜ "linux "という単語を定数 "1 "と解釈するのですか?
-
[解決済み】標準ライブラリを使ってアライメントされたメモリのみを割り当てるには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】valgrind - サイズ8のブロックが割り当てられた後、アドレス ---- が0バイトになる。
-
[解決済み】Cコンパイルエラーです。Idは1終了ステータスを返した
-
[解決済み】 `S_ISREG()` とは何ですか、そして何をするのですか?
-
[解決済み] (.text+0x20): `main'への未定義の参照と関数への未定義の参照
-
[解決済み】エラー:'for'ループの初期宣言はC99モードでしかできない【重複
-
[解決済み】 error: too few arguments to function `printDay' (C言語)
-
[解決済み] [Solved] なぜこのようなエラーが発生するのでしょうか。「データ定義に型またはストレージクラスがない」?
-
[解決済み】インクリメントオペランドとして lvalue が必要です。
-
[解決済み】宣言指定子で2つ以上のデータ型がある場合のエラー【非公開
-
[解決済み】Errno: 11, Resource Temporarily Unavailable(リソースが一時的に利用できない