いつもお世話になっております。
C/C++ソース混在プロジェクトなので、ビルドすると下記のエラーが発生します。
ご教授いただけると幸いです。
<ビルドエラー>
(1)E0520018:Expected a ")"
(2)E0520020:Identifier "__func__" is undefined
(1)の現象 ※便宜上、諸々削除し原因特定コードにしております。
/*-------------- VL53l0X.h -------------*/
=VL53l0X.h=class VL53L0X{ public: VL53L0X(void);
private: unsigned char address;};
/*-------------- VL53l0X.cpp -------------*/
#include "VL53L0X.h"#define U_VL53L0X_ADDRESS_DEFAULT 0b0101001
VL53L0X::VL53L0X(void) : address(U_VL53L0X_ADDRESS_DEFAULT) ★ここでエラー{}
【ビルドエラー】
E0520018:Expected a ")"
【コメント】
★を
#define U_VL53L0X_ADDRESS_DEFAULT (0b0101001) ⇒同じエラー
#define U_VL53L0X_ADDRESS_DEFAULT 0101001 ⇒エラーがなくなります。
(2)の現象
/*-------------- C側のソース -------------*/
#define LOG(loglvl, tag, fmt, ...) u_log(loglvl, tag, __FILE__, __LINE__, __func__, fmt, __VA_ARGS__)
VL53L0X::test(void){
:
LOG(U_LOG_SILENT, U_LOG_TAG_VL53L0X, "OK \n", NULL); ★ここでエラー
}
E0520020:Identifier "__func__" is undefined
『extern "C"』してもだめで、C++では__func__、__VA_ARGS__は使えないのでしょうか?
【その他】
・RX231/CS+(CC-RX)/北斗電子製評価ボード
・ビルドツールの設定は、C言語:C99(-lang=c99)、Cpp:C++(-lang=cpp)
ライブラリジェネレートのC++の設定で何か有効にしなくてはならないのでしょうか?
以上、よろしくお願いいたします。
bunbunさん、こんにちは。NoMaYです。> 『E0520020:Identifier "class" is undefined 』とでるようになり、C++のclassの定義を含むヘッダファイル(.h)をCのソース(.c)でインクルードしてしまって、エラーになっている予感がします。こまめに、#ifdef __cplusplus や #ifndef __cplusplus でコンパイルされる/されないを、切り分けていかないといけないのではないでしょうか、、、