入力候補にヘッダファイルが表示されるのに、読み込むことができません

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 入力候補にヘッダファイルが表示されるのに、読み込むことができません

Re: 入力候補にヘッダファイルが表示されるのに、読み込むことができません

#13

by Mokutsuno » 8年前

RaspberryPiのOSにはRaspbianを入れてあるので、Visual C++ for Linux Developmentを使っていたのです。
どうやらヘッダファイルをインクルードしなくても何とかなりそうなので、そうしようと思います。
大変ご迷惑おかけしました。ありがとうございました。

Re: 入力候補にヘッダファイルが表示されるのに、読み込むことができません

#12

by Math » 8年前

RaspberryPihttp://www.buildinsider.net/small/windowsiot/01
Windows10のVS2015 Commnity - で C# ユニバーサルWindows  テンプレートで ”IoT"開発できそうです。
http://csi.nisinippon.com/iot1.jpg
http://csi.nisinippon.com/iot2.png

コード:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.ApplicationModel;
using Windows.ApplicationModel.Activation;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

namespace FirstIoTguiApp
{
    /// <summary>
    /// 既定の Application クラスを補完するアプリケーション固有の動作を提供します。
    /// </summary>
    sealed partial class App : Application
    {
        /// <summary>
        /// 単一アプリケーション オブジェクトを初期化します。これは、実行される作成したコードの
        ///最初の行であるため、main() または WinMain() と論理的に等価です。
        /// </summary>
        public App()
        {
            this.InitializeComponent();
            this.Suspending += OnSuspending;
        }

        /// <summary>
        /// アプリケーションがエンド ユーザーによって正常に起動されたときに呼び出されます。他のエントリ ポイントは、
        /// アプリケーションが特定のファイルを開くために起動されたときなどに使用されます。
        /// </summary>
        /// <param name="e">起動の要求とプロセスの詳細を表示します。</param>
        protected override void OnLaunched(LaunchActivatedEventArgs e)
        {
#if DEBUG
            if (System.Diagnostics.Debugger.IsAttached)
            {
                this.DebugSettings.EnableFrameRateCounter = true;
            }
#endif
            Frame rootFrame = Window.Current.Content as Frame;

            // ウィンドウに既にコンテンツが表示されている場合は、アプリケーションの初期化を繰り返さずに、
            // ウィンドウがアクティブであることだけを確認してください
            if (rootFrame == null)
            {
                // ナビゲーション コンテキストとして動作するフレームを作成し、最初のページに移動します
                rootFrame = new Frame();

                rootFrame.NavigationFailed += OnNavigationFailed;

                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
                {
                    //TODO: 以前中断したアプリケーションから状態を読み込みます
                }

                // フレームを現在のウィンドウに配置します
                Window.Current.Content = rootFrame;
            }

            if (e.PrelaunchActivated == false)
            {
                if (rootFrame.Content == null)
                {
                    // ナビゲーション スタックが復元されない場合は、最初のページに移動します。
                    // このとき、必要な情報をナビゲーション パラメーターとして渡して、新しいページを
                    //構成します
                    rootFrame.Navigate(typeof(MainPage), e.Arguments);
                }
                // 現在のウィンドウがアクティブであることを確認します
                Window.Current.Activate();
            }
        }

        /// <summary>
        /// 特定のページへの移動が失敗したときに呼び出されます
        /// </summary>
        /// <param name="sender">移動に失敗したフレーム</param>
        /// <param name="e">ナビゲーション エラーの詳細</param>
        void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
        {
            throw new Exception("Failed to load Page " + e.SourcePageType.FullName);
        }

        /// <summary>
        /// アプリケーションの実行が中断されたときに呼び出されます。
        /// アプリケーションが終了されるか、メモリの内容がそのままで再開されるかに
        /// かかわらず、アプリケーションの状態が保存されます。
        /// </summary>
        /// <param name="sender">中断要求の送信元。</param>
        /// <param name="e">中断要求の詳細。</param>
        private void OnSuspending(object sender, SuspendingEventArgs e)
        {
            var deferral = e.SuspendingOperation.GetDeferral();
            //TODO: アプリケーションの状態を保存してバックグラウンドの動作があれば停止します
            deferral.Complete();
        }
    }
}
[/size]

Re: 入力候補にヘッダファイルが表示されるのに、読み込むことができません

#11

by Math » 8年前

Visual C++ for Linux Developmentは Linux側のコンパイルをDebugするのであって Linux側とVS2015側では.hの場所が全く違って表示されているから読み込めないのでしょう。それと Linuxのコードがコンパイルされるだけで”移植”にはならないでしょう。

Re: 入力候補にヘッダファイルが表示されるのに、読み込むことができません

#10

by Math » 8年前

Microsoft Visual Studio Community 2015
Version 14.0.25431.01 Update 3
Microsoft .NET Framework
Version 4.6.01586

インストールされているバージョン:Community

...

Visual C++ 2015 00322-20000-00000-AA458
Microsoft Visual C++ 2015
-----------------------------------------------------
となってますか?
テンプレートはかなり違います。

私はWindows10のBashを有効化してUbuntuをいれネイティブでLinuxが動きます。Vimエディタもつかえます!。
g++、gcc は CodeBlock16を使っています。

Visual C++ for Linux Developmenはどちらからインストールされましたか?
(3Dプリンターのファームウェア(Marlin)を移植する?... Windows版はないのでしょうか?)

Re: 入力候補にヘッダファイルが表示されるのに、読み込むことができません

#9

by Mokutsuno » 8年前

複雑なので、これ以降はもしよろしければで良いので、お願いします。
まず、しようとしていることは、Visual C++ for Linux Developmentというプラグイン?とWiringPiを使用して、ArduinoのスケッチをRaspberryPiに移植することができるようなので、それをしようとしています。
具体的には、3Dプリンターのファームウェア(Marlin)を移植しようとしています。
私の技術でできるできないは別として、勉強のつもりで行っています。

そのうえで、Arduinoのスケッチでは、AVRのライブラリ?を使用しているためそのままRaspberryPiで動くことはないのですが、
とりあえず、マイコンボードの設定がされていないエラー以外のコンパイルを通るようにしているところです。
そこで、上述の <avr\pgmspace.h>が必要なのでAVRのライブラリをダウンロード、プロパティで設定したのですが、
読み込めない旨のエラーが出た、ということです。
そのため、テンプレートは以下の画像のように、Blink(Raspberry)を使っています。

Arduino IDE for Visual Studio 2010というものを見つけたので、そちらでもインクルードできるか試してみます。

以下、ファームウェアのコードは膨大なので、とりあえず、Marlin.hをのせます。

コード:

/**
 * Marlin 3D Printer Firmware
 * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
 *
 * Based on Sprinter and grbl.
 * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */
#ifndef MARLIN_H
#define MARLIN_H

#define  FORCE_INLINE __attribute__((always_inline)) inline
/**
 * Compiler warning on unused variable.
 */
#define UNUSED(x) (void) (x)

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <inttypes.h>
#include <avr\pgmspace.h>
#include <avr/eeprom.h>
#include <avr\interrupt.h>


#include "fastio.h"
#include "Configuration.h"
#include "pins.h"

#ifndef SANITYCHECK_H
  #error Your Configuration.h and Configuration_adv.h files are outdated!
#endif

//#include "Arduino.h"
#include <wiringPi.h>

typedef unsigned long millis_t;

// Arduino < 1.0.0 does not define this, so we need to do it ourselves
#ifndef analogInputToDigitalPin
  #define analogInputToDigitalPin(p) ((p) + 0xA0)
#endif

#ifdef USBCON
  #include "HardwareSerial.h"
#endif

#include "MarlinSerial.h"

//#include "WString.h"

#ifdef USBCON
  #if ENABLED(BLUETOOTH)
    #define MYSERIAL bluetoothSerial
  #else
    #define MYSERIAL Serial
  #endif // BLUETOOTH
#else
  #define MYSERIAL customizedSerial
#endif

#define SERIAL_CHAR(x) MYSERIAL.write(x)
#define SERIAL_EOL SERIAL_CHAR('\n')

#define SERIAL_PROTOCOLCHAR(x) SERIAL_CHAR(x)
#define SERIAL_PROTOCOL(x) MYSERIAL.print(x)
#define SERIAL_PROTOCOL_F(x,y) MYSERIAL.print(x,y)
#define SERIAL_PROTOCOLPGM(x) serialprintPGM(PSTR(x))
#define SERIAL_PROTOCOLLN(x) do{ MYSERIAL.print(x); SERIAL_EOL; }while(0)
#define SERIAL_PROTOCOLLNPGM(x) do{ serialprintPGM(PSTR(x)); SERIAL_EOL; }while(0)


extern const char errormagic[];
extern const char echomagic[];

#define SERIAL_ERROR_START serialprintPGM(errormagic)
#define SERIAL_ERROR(x) SERIAL_PROTOCOL(x)
#define SERIAL_ERRORPGM(x) SERIAL_PROTOCOLPGM(x)
#define SERIAL_ERRORLN(x) SERIAL_PROTOCOLLN(x)
#define SERIAL_ERRORLNPGM(x) SERIAL_PROTOCOLLNPGM(x)

#define SERIAL_ECHO_START serialprintPGM(echomagic)
#define SERIAL_ECHO(x) SERIAL_PROTOCOL(x)
#define SERIAL_ECHOPGM(x) SERIAL_PROTOCOLPGM(x)
#define SERIAL_ECHOLN(x) SERIAL_PROTOCOLLN(x)
#define SERIAL_ECHOLNPGM(x) SERIAL_PROTOCOLLNPGM(x)

#define SERIAL_ECHOPAIR(name,value) do{ serial_echopair_P(PSTR(name),(value)); }while(0)

void serial_echopair_P(const char* s_P, int v);
void serial_echopair_P(const char* s_P, long v);
void serial_echopair_P(const char* s_P, float v);
void serial_echopair_P(const char* s_P, double v);
void serial_echopair_P(const char* s_P, unsigned long v);

// Things to write to serial from Program memory. Saves 400 to 2k of RAM.
// ここがシリアル通信で送信するところなので、これをプロセス間通信の送信に切り替える
FORCE_INLINE void serialprintPGM(const char* str) {
  int Write(&str) const;
}

void idle(
  #if ENABLED(FILAMENTCHANGEENABLE)
    bool no_stepper_sleep=false  // pass true to keep steppers from disabling on timeout
  #endif
);

void manage_inactivity(bool ignore_stepper_queue = false);

#if ENABLED(DUAL_X_CARRIAGE) && HAS_X_ENABLE && HAS_X2_ENABLE
  #define  enable_x() do { X_ENABLE_WRITE( X_ENABLE_ON); X2_ENABLE_WRITE( X_ENABLE_ON); } while (0)
  #define disable_x() do { X_ENABLE_WRITE(!X_ENABLE_ON); X2_ENABLE_WRITE(!X_ENABLE_ON); axis_known_position[X_AXIS] = false; } while (0)
#elif HAS_X_ENABLE
  #define  enable_x() X_ENABLE_WRITE( X_ENABLE_ON)
  #define disable_x() { X_ENABLE_WRITE(!X_ENABLE_ON); axis_known_position[X_AXIS] = false; }
#else
  #define enable_x() ;
  #define disable_x() ;
#endif

#if HAS_Y_ENABLE
  #if ENABLED(Y_DUAL_STEPPER_DRIVERS)
    #define  enable_y() { Y_ENABLE_WRITE( Y_ENABLE_ON); Y2_ENABLE_WRITE(Y_ENABLE_ON); }
    #define disable_y() { Y_ENABLE_WRITE(!Y_ENABLE_ON); Y2_ENABLE_WRITE(!Y_ENABLE_ON); axis_known_position[Y_AXIS] = false; }
  #else
    #define  enable_y() Y_ENABLE_WRITE( Y_ENABLE_ON)
    #define disable_y() { Y_ENABLE_WRITE(!Y_ENABLE_ON); axis_known_position[Y_AXIS] = false; }
  #endif
#else
  #define enable_y() ;
  #define disable_y() ;
#endif

#if HAS_Z_ENABLE
  #if ENABLED(Z_DUAL_STEPPER_DRIVERS)
    #define  enable_z() { Z_ENABLE_WRITE( Z_ENABLE_ON); Z2_ENABLE_WRITE(Z_ENABLE_ON); }
    #define disable_z() { Z_ENABLE_WRITE(!Z_ENABLE_ON); Z2_ENABLE_WRITE(!Z_ENABLE_ON); axis_known_position[Z_AXIS] = false; }
  #else
    #define  enable_z() Z_ENABLE_WRITE( Z_ENABLE_ON)
    #define disable_z() { Z_ENABLE_WRITE(!Z_ENABLE_ON); axis_known_position[Z_AXIS] = false; }
  #endif
#else
  #define enable_z() ;
  #define disable_z() ;
#endif

#if HAS_E0_ENABLE
  #define enable_e0()  E0_ENABLE_WRITE( E_ENABLE_ON)
  #define disable_e0() E0_ENABLE_WRITE(!E_ENABLE_ON)
#else
  #define enable_e0()  /* nothing */
  #define disable_e0() /* nothing */
#endif

#if (EXTRUDERS > 1) && HAS_E1_ENABLE
  #define enable_e1()  E1_ENABLE_WRITE( E_ENABLE_ON)
  #define disable_e1() E1_ENABLE_WRITE(!E_ENABLE_ON)
#else
  #define enable_e1()  /* nothing */
  #define disable_e1() /* nothing */
#endif

#if (EXTRUDERS > 2) && HAS_E2_ENABLE
  #define enable_e2()  E2_ENABLE_WRITE( E_ENABLE_ON)
  #define disable_e2() E2_ENABLE_WRITE(!E_ENABLE_ON)
#else
  #define enable_e2()  /* nothing */
  #define disable_e2() /* nothing */
#endif

#if (EXTRUDERS > 3) && HAS_E3_ENABLE
  #define enable_e3()  E3_ENABLE_WRITE( E_ENABLE_ON)
  #define disable_e3() E3_ENABLE_WRITE(!E_ENABLE_ON)
#else
  #define enable_e3()  /* nothing */
  #define disable_e3() /* nothing */
#endif

/**
 * The axis order in all axis related arrays is X, Y, Z, E
 */
#define NUM_AXIS 4

/**
 * Axis indices as enumerated constants
 *
 * A_AXIS and B_AXIS are used by COREXY printers
 * X_HEAD and Y_HEAD is used for systems that don't have a 1:1 relationship between X_AXIS and X Head movement, like CoreXY bots.
 */
enum AxisEnum {X_AXIS = 0, A_AXIS = 0, Y_AXIS = 1, B_AXIS = 1, Z_AXIS = 2, C_AXIS = 2, E_AXIS = 3, X_HEAD = 4, Y_HEAD = 5, Z_HEAD = 5};

enum EndstopEnum {X_MIN = 0, Y_MIN = 1, Z_MIN = 2, Z_MIN_PROBE = 3, X_MAX = 4, Y_MAX = 5, Z_MAX = 6, Z2_MIN = 7, Z2_MAX = 8};

void enable_all_steppers();
void disable_all_steppers();

void FlushSerialRequestResend();
void ok_to_send();

void reset_bed_level();
void prepare_move();
void kill(const char*);
void Stop();

#if ENABLED(FILAMENT_RUNOUT_SENSOR)
  void filrunout();
#endif

/**
 * Debug flags - not yet widely applied
 */
enum DebugFlags {
  DEBUG_NONE          = 0,
  DEBUG_ECHO          = _BV(0),
  DEBUG_INFO          = _BV(1),
  DEBUG_ERRORS        = _BV(2),
  DEBUG_DRYRUN        = _BV(3),
  DEBUG_COMMUNICATION = _BV(4),
  DEBUG_LEVELING      = _BV(5)
};
extern uint8_t marlin_debug_flags;
#define DEBUGGING(F) (marlin_debug_flags & (DEBUG_## F))

extern bool Running;
inline bool IsRunning() { return  Running; }
inline bool IsStopped() { return !Running; }

bool enqueue_and_echo_command(const char* cmd, bool say_ok=false); //put a single ASCII command at the end of the current buffer or return false when it is full
void enqueue_and_echo_command_now(const char* cmd); // enqueue now, only return when the command has been enqueued
void enqueue_and_echo_commands_P(const char* cmd); //put one or many ASCII commands at the end of the current buffer, read from flash

void prepare_arc_move(char isclockwise);
void clamp_to_software_endstops(float target[3]);

extern millis_t previous_cmd_ms;
inline void refresh_cmd_timeout() { previous_cmd_ms = millis(); }

#if ENABLED(FAST_PWM_FAN)
  void setPwmFrequency(uint8_t pin, int val);
#endif


#ifndef CRITICAL_SECTION_START
  #define CRITICAL_SECTION_START  unsigned char _sreg = SREG; local_irq_disable();
  #define CRITICAL_SECTION_END    SREG = _sreg;
#endif

extern bool axis_relative_modes[];
extern int feedrate_multiplier;
extern bool volumetric_enabled;
extern int extruder_multiplier[EXTRUDERS]; // sets extrude multiply factor (in percent) for each extruder individually
extern float filament_size[EXTRUDERS]; // cross-sectional area of filament (in millimeters), typically around 1.75 or 2.85, 0 disables the volumetric calculations for the extruder.
extern float volumetric_multiplier[EXTRUDERS]; // reciprocal of cross-sectional area of filament (in square millimeters), stored this way to reduce computational burden in planner
extern float current_position[NUM_AXIS];
extern float home_offset[3]; // axis[n].home_offset
extern float min_pos[3]; // axis[n].min_pos
extern float max_pos[3]; // axis[n].max_pos
extern bool axis_known_position[3]; // axis[n].is_known
extern bool axis_homed[3]; // axis[n].is_homed

#if ENABLED(DELTA)
  #ifndef DELTA_RADIUS_TRIM_TOWER_1
    #define DELTA_RADIUS_TRIM_TOWER_1 0.0
  #endif
  #ifndef DELTA_RADIUS_TRIM_TOWER_2
    #define DELTA_RADIUS_TRIM_TOWER_2 0.0
  #endif
  #ifndef DELTA_RADIUS_TRIM_TOWER_3
    #define DELTA_RADIUS_TRIM_TOWER_3 0.0
  #endif
  #ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER_1
    #define DELTA_DIAGONAL_ROD_TRIM_TOWER_1 0.0
  #endif
  #ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER_2
    #define DELTA_DIAGONAL_ROD_TRIM_TOWER_2 0.0
  #endif
  #ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER_3
    #define DELTA_DIAGONAL_ROD_TRIM_TOWER_3 0.0
  #endif
  extern float delta[3];
  extern float endstop_adj[3]; // axis[n].endstop_adj
  extern float delta_radius;
  extern float delta_diagonal_rod;
  extern float delta_segments_per_second;
  extern float delta_diagonal_rod_trim_tower_1;
  extern float delta_diagonal_rod_trim_tower_2;
  extern float delta_diagonal_rod_trim_tower_3;
  void calculate_delta(float cartesian[3]);
  void recalc_delta_settings(float radius, float diagonal_rod);
  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
    extern int delta_grid_spacing[2];
    void adjust_delta(float cartesian[3]);
  #endif
#elif ENABLED(SCARA)
  extern float axis_scaling[3];  // Build size scaling
  void calculate_delta(float cartesian[3]);
  void calculate_SCARA_forward_Transform(float f_scara[3]);
#endif

#if ENABLED(Z_DUAL_ENDSTOPS)
  extern float z_endstop_adj;
#endif

#if ENABLED(AUTO_BED_LEVELING_FEATURE)
  extern float zprobe_zoffset;
#endif

#if ENABLED(PREVENT_DANGEROUS_EXTRUDE)
  extern float extrude_min_temp;
#endif

#if FAN_COUNT > 0
  extern int fanSpeeds[FAN_COUNT];
#endif

#if ENABLED(BARICUDA)
  extern int ValvePressure;
  extern int EtoPPressure;
#endif

#if ENABLED(FILAMENT_WIDTH_SENSOR)
  extern float filament_width_nominal;  //holds the theoretical filament diameter i.e., 3.00 or 1.75
  extern bool filament_sensor;  //indicates that filament sensor readings should control extrusion
  extern float filament_width_meas; //holds the filament diameter as accurately measured
  extern int8_t measurement_delay[];  //ring buffer to delay measurement
  extern int delay_index1, delay_index2;  //ring buffer index. used by planner, temperature, and main code
  extern float delay_dist; //delay distance counter
  extern int meas_delay_cm; //delay distance
#endif

#if ENABLED(PID_ADD_EXTRUSION_RATE)
  extern int lpq_len;
#endif

#if ENABLED(FWRETRACT)
  extern bool autoretract_enabled;
  extern bool retracted[EXTRUDERS]; // extruder[n].retracted
  extern float retract_length, retract_length_swap, retract_feedrate, retract_zlift;
  extern float retract_recover_length, retract_recover_length_swap, retract_recover_feedrate;
#endif

extern millis_t print_job_start_ms;
extern millis_t print_job_stop_ms;

// Handling multiple extruders pins
extern uint8_t active_extruder;

#if ENABLED(DIGIPOT_I2C)
  extern void digipot_i2c_set_current(int channel, float current);
  extern void digipot_i2c_init();
#endif

#if HAS_TEMP_0 || HAS_TEMP_BED || ENABLED(HEATER_0_USES_MAX6675)
  void print_heaterstates();
#endif

extern void calculate_volumetric_multipliers();

// Print job timer related functions
millis_t print_job_timer();
bool print_job_start(millis_t t = 0);
bool print_job_stop(bool force = false);

#endif //MARLIN_H

画像

Re: 入力候補にヘッダファイルが表示されるのに、読み込むことができません

#8

by Math » 8年前

それと全コードを提示下さい。宜しくお願い致します。

Re: 入力候補にヘッダファイルが表示されるのに、読み込むことができません

#7

by Math » 8年前

テンプレートを間違えているのでは?
プロジェクトのテンプレートの画面キャプチャーを送ってください。とそもそも何のためのプログラムなのか(g++,gcc?)説明して頂いてないような。

Re: 入力候補にヘッダファイルが表示されるのに、読み込むことができません

#6

by Mokutsuno » 8年前

回答ありがとうございます。
プロパティの設定を確認してみたりしましたが、間違いはないようでした。

avrファイル以下のヘッダファイルはすべて読み込めませんでした。(インテリセンスには表示されます)
尚、一つ上の階層の(../avr)inttypes.hなどのヘッダファイルは読み込めました。(これもインテリセンスに表示されています)
また、一つ上の階層(../avr)にヘッダファイルをコピーしてみたり、(#include <pgmspace.h>)
プロジェクトのフォルダの中にヘッダファイルをコピーすることもしてみましたが、(#include "pgmspace.h")
プロパティのインクルードディレクトリのパスを"D:\WinAVR\avr\include"から"D:\WinAVR\avr\include\avr"
にしても読み込めませんでした(インテリセンスには表示有)

><avr/pgmspace.h> の代わりに <pgmspace.h> をインクルードしたら直ったようです。
>#if で分岐させています。

どちらも試してみましたが、残念ながらエラーが出ます。

プロジェクトを作成するときに選択するテンプレートによって開けないものがあるとか、
g++、gccなどのコンパイラによっては開けないといった可能性はありますか?

Re: 入力候補にヘッダファイルが表示されるのに、読み込むことができません

#5

by Menu » 8年前

インテリセンスが誤動作した経験はないのでavr/で表示される他のファイルもチェックして見て下さい。(もしかしてインテリセンスがおかしくなっている?かも?。考えにくいけど一応は疑ってはみた方がいいでしょう)

Re: 入力候補にヘッダファイルが表示されるのに、読み込むことができません

#4

by みえ » 8年前

検索すると似たような事例がいくつか出てきますね。ライブラリの構成を知らないので現象の発生原因はよく分かりませんが、以下の方法で直るかもしれません。

Does not compile for ESP8266 b/c of pgmspace.h · Issue #15 · jgillick/arduino-LEDFader
https://github.com/jgillick/arduino-LEDFader/issues/15

→ <avr/pgmspace.h> の代わりに <pgmspace.h> をインクルードしたら直ったようです。

"avr/pgmspace.h: No such file or directory" on ESP8266. Patch inside. · Issue #5 · SodaqMoja/Sodaq_DS3231
https://github.com/SodaqMoja/Sodaq_DS3231/issues/5

→ こちらはもう少しスマートで、#if で分岐させています。

コード:

#if (defined(__AVR__))
#include <avr\pgmspace.h>
#else
#include <pgmspace.h>
#endif

Re: 入力候補にヘッダファイルが表示されるのに、読み込むことができません

#3

by Mokutsuno » 8年前

回答ありがとうございます。
もう一度よく確認してみます

Re: 入力候補にヘッダファイルが表示されるのに、読み込むことができません

#2

by Math » 8年前

>avr/まで打つとpgmspace.hと入力候補にもヘッダファイルが表示されるので...
インテリセンスに出ているならそう言うことはあり得ないので何処かに間違いがあります。
よく確かめてみて下さい。(多分単純なミスと思われる..)

入力候補にヘッダファイルが表示されるのに、読み込むことができません

#1

by Mokutsuno » 8年前

VisualStudio2015 community
windows10
言語: C++
の環境で、pgmspace.hをインクルードするために、
#include <avr/pgmspace.h>
と記述しているのですが、

avr/pgmspace.h: そのようなファイルやディレクトリはありません

とエラーが発生してしまいます。
avr/まで打つとpgmspace.hと入力候補にもヘッダファイルが表示されるので、パスは通っていると思うのですが...
プロパティのインクルードディレクトリーに/avrまでのパスは追加してあります。
別のプロジェクトを作成してそこでインクルードしてみましたが同じような状態でエラーが出ました。
ほかに何か原因として考えれられるものはありますでしょうか?

ページトップ