質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

マイコン

マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。

Q&A

解決済

3回答

2867閲覧

Lazurite IDE で構造体のネストのコンパイルが通りません……

mrtb

総合スコア8

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

マイコン

マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。

0グッド

0クリップ

投稿2016/09/15 10:22

編集2016/09/15 10:53

###前提・実現したいこと
Lazurite IDEで共用体の中に構造体を定義したコードを書きたいです。

###発生している問題・エラーメッセージ

CCU8 C Compiler, Ver.3.41 Copyright (C) 2008-2013 LAPIS Semiconductor Co., Ltd. test.c test.c(9) : Error : E4009 : Syntax error : ';' Error(s) : 1 Warning(s) : 0 Compile error occurs. Stopped build.

###該当のソースコード

c

1#include "test_ide.h" // Additional Header 2 3union u_data{ 4 unsigned char BYTE[2]; 5 struct{ 6 struct{ // BYTE[0] 7 unsigned char :1; 8 unsigned char A :7; 9 }; 10 struct{// BYTE[1] 11 unsigned char :1; 12 unsigned char B :7; 13 }; 14 }; 15}DATA = {1,1}; 16 17void setup() { 18 // put your setup code here, to run once: 19 20} 21 22void loop() { 23 // put your main code here, to run repeatedly: 24 25}

###試したこと
Arduino IDEで同様の(一行目をコメントアウトした)コードは問題なく通り動作しました。

###補足情報(言語/FW/ツール等のバージョンなど)
Lazuriteのフォーラムに投稿しようとすると

エラー: キャプチャ値が無効です。

と怒られ投稿できなかったのでこちらで質問させていただきました。

Lazurite IDEのバージョンは1.0.0です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

自己解決

ラピスセミコンダクタのフォーラムから回答が帰ってきたので転載します.

下記の様に、構造体に名前を付与すると問題なくビルドは通るようです。

お試しください。

c

1#include "test_ide.h" // Additional Header 2 3union u_data{ 4 unsigned char BYTE[2]; 5 struct{ 6 struct{ // BYTE[0] 7 unsigned char :1; 8 unsigned char A :7; 9 } pack11; 10 struct{// BYTE[1] 11 unsigned char :1; 12 unsigned char B :7; 13 } pack12; 14 } pack1; 15}DATA = {1,1}; 16 17void setup() { 18 // put your setup code here, to run once: 19 20} 21 22void loop() { 23 // put your main code here, to run repeatedly: 24 25} 26

投稿2017/08/30 13:27

mrtb

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

外していたらすいません。
構造体にタグ名が記されていないからじゃないですか?
もしくはビットフィールドでタグ名が無いものが許されないとか?

C

1union u_data{ 2 unsigned char BYTE[2]; 3 struct X1 { 4 struct X2 { // BYTE[0] 5 unsigned char C :1; 6 unsigned char A :7; 7 }; 8 struct X3 {// BYTE[1] 9 unsigned char D :1; 10 unsigned char B :7; 11 }; 12 }; 13}DATA = {1,1};

Lazuriteの環境を持ってないのでこれ以上はわかりません。

投稿2017/08/29 08:21

PineMatsu

総合スコア3579

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんにちは。

直接の回答ではないのですが、ヒントにはなると思います。

MinGWとmsvcではビルドできましたので文法的にはあっていると思います。
test_ide.hは手元にないのでインクルードしていません。
ヘッダ・ファイルtest_ide.hの中に不正な記述があると、そのようなエラーがでることがあります。
#include "test_ide.h"をコメントアウトして、そのエラーがでなくなったら、test_ide.hに何か問題がある筈です。{}の対応とか見なおしてみると良いように思います。

投稿2016/09/15 10:45

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mrtb

2016/09/15 10:50

回答ありがとうございます。 一行目をコメントアウトしてみましたが、同じエラーが出ました。
Chironian

2016/09/15 12:52

ならば、Lazuriteのコンパイラが対応していない機能を使っているのだと思います。 Lazuriteについて調べたところANSI-C対応のようですね。むちゃくちゃ古い(1989年)です。http://www.tamasoft.co.jp/lc/hlp/F035.html によるとANSI-Cのビット・フィールドはint型にしか対応していないそうなので、unsigned charではなくintにしてみてはどうでしょうか? int型が2バイトなら目的を果たすことはできる筈です。
mrtb

2017/08/29 06:49

5ヶ所のcharを何も考えずにintに置換して実行してみましたが,全く同じエラーが出ました. 共用体の中に構造体を宣言しようとしたときにエラーを吐く?ところまでは確認できました. なお,test_ide.hの中身は一行のみで,「#include "lazurite.h"」と マイコンを動かすための諸々の関数が定義されてそうなヘッダがインクルードされていました.
Chironian

2017/08/29 07:07

となると、Lazuriteを持っていないので私には分かりません。 お役に立てずすいません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問