IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

error C2065: 'FILE' : identificateur non déclaré Comment corriger cette erreur ?


Sujet :

Visual C++

  1. #1
    Membre averti
    Avatar de Pierre8r
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 518
    Points : 341
    Points
    341
    Par défaut error C2065: 'FILE' : identificateur non déclaré Comment corriger cette erreur ?
    Bonjour,

    Ma configuration :
    OS Windows 2000 Pro
    Visual C++ 2005 Express
    Windows® Server 2003 SP1 Platform SDK

    But :
    J'essai de remplacer l'utilisation de MFC par l'API Win32 dans une DLL.

    Soit un extrait de code de la DLL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	char filename[ 256 ];
    	FILE *fh;
    	int  iLines = 0;
    Erreur à la compile :

    k:\adkwin32\asciiwin32\plugin.cpp(90) : error C2065: 'FILE' : identificateur non déclaré
    FILE ça vient d'ou ?

    Comment corriger cette erreur ?

    J'ai fais une recherche dans l'aide avec le mot FILE, je n'ai rien trouvé.

    Le projet complet

    Merci,

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    #include <stdio.h> ?

    (ou bien #include <cstdio> si tu compiles en C++).

  3. #3
    Membre averti
    Avatar de Pierre8r
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 518
    Points : 341
    Points
    341
    Par défaut
    Merci.

  4. #4
    Membre averti
    Avatar de Pierre8r
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 518
    Points : 341
    Points
    341
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    #include <stdio.h> ?

    (ou bien #include <cstdio> si tu compiles en C++).

    Pour être du C++ l'extension .cpp au fichier ne suffit pas ?

    Ce fichier c'est du C ou du C++ ?


    ////////////////////////////////////////////////////
    // Plugin.cpp
    // Standard implementation file for all AmiBroker plug-ins
    //
    // Copyright (C)2001-2002 Tomasz Janeczko, amibroker.com
    // All rights reserved.
    //
    // Last modified: 2002-03-11 TJ
    //
    // You may use this code in your own projects provided that:
    //
    // 1. You are registered user of AmiBroker
    // 2. The software you write using it is for personal, noncommercial use only
    //
    // For commercial use you have to obtain a separate license from Amibroker.com
    //
    ////////////////////////////////////////////////////

    #include "stdafx.h"
    #include "ASCIIWin32.h"
    #include "Plugin.h"
    #include "stdlib.h"
    #include "stdio.h"


    // These are the only two lines you need to change
    #define PLUGIN_NAME "ASCII sample data Plug-in"
    #define VENDOR_NAME "Amibroker.com"
    #define PLUGIN_VERSION 10000
    #define PLUGIN_ID PIDCODE( 'A', 'S', 'C', 'I' )

    #define THIS_PLUGIN_TYPE PLUGIN_TYPE_DATA

    ////////////////////////////////////////
    // Data section
    ////////////////////////////////////////
    static struct PluginInfo oPluginInfo =
    {
    sizeof( struct PluginInfo ),
    THIS_PLUGIN_TYPE,
    PLUGIN_VERSION,
    PLUGIN_ID,
    PLUGIN_NAME,
    VENDOR_NAME,
    0,
    387000
    };


    ///////////////////////////////////////////////////////////
    // Basic plug-in interface functions exported by DLL
    ///////////////////////////////////////////////////////////

    PLUGINAPI int GetPluginInfo( struct PluginInfo *pInfo )
    {
    *pInfo = oPluginInfo;

    return TRUE;
    }


    PLUGINAPI int Init(void)
    {
    return 1;
    }

    PLUGINAPI int Release(void)
    {
    return 1; // default implementation does nothing
    }



    PLUGINAPI int Notify(struct PluginNotification *pn)
    {
    // default implementation does nothing

    return 1;
    }

    PLUGINAPI int GetQuotes( LPCTSTR pszTicker, int nPeriodicity, int nLastValid, int nSize, struct Quotation *pQuotes )
    {
    // needed because we will use MFC inside this function
    //AFX_MANAGE_STATE( AfxGetStaticModuleState() );

    // we assume that intraday data files are stored in ASCII subfolder
    // of AmiBroker directory and they have name of <SYMBOL>.AQI
    // and the format of Date(YYMMDD),Time(HHMM),Open,High,Low,Close,Volume
    // and quotes are sorted in ascending order - oldest quote is on the top

    char filename[ 256 ];
    FILE *fh;
    int iLines = 0;

    // format path to the file (we are using relative path)
    sprintf_s( filename, "ASCII\\%s.AQI", pszTicker );

    // open file for reading
    fh = fopen( filename, "r" );

    // if file is successfully opened read it and fill quotation array
    if( fh )
    {
    char line[ 256 ];

    // read the line of text until the end of text
    // but not more than array size provided by AmiBroker
    while( fgets( line, sizeof( line ), fh ) && iLines < nSize )
    {
    // get array entry
    struct Quotation *qt = &pQuotes[ iLines ];

    // parse line contents: divide tokens separated by comma (strtok) and interpret values

    // date and time first
    int datenum = atoi( strtok( line, "," ) ); // YYMMDD
    int timenum = atoi( strtok( NULL, "," ) ); // HHMM

    qt->DateTime.PackDate.Tick = 0;
    qt->DateTime.PackDate.Minute = timenum % 100;
    qt->DateTime.PackDate.Hour = timenum / 100;
    qt->DateTime.PackDate.Year = 100 + datenum / 10000;
    qt->DateTime.PackDate.Month = ( datenum / 100 ) % 100;
    qt->DateTime.PackDate.Day = datenum % 100;

    // now OHLC price fields
    qt->Open = (float) atof( strtok( NULL, "," ) );
    qt->High = (float) atof( strtok( NULL, "," ) );
    qt->Low = (float) atof( strtok( NULL, "," ) );
    qt->Price = (float) atof( strtok( NULL, "," ) ); // close price

    // ... and Volume
    qt->Volume = atoi( strtok( NULL, ",\n" ) );

    iLines++;
    }

    // close the file once we are done
    fclose( fh );

    }

    // return number of lines read which is equal to
    // number of quotes
    return iLines;
    }


    PLUGINAPI int Configure( LPCTSTR pszPath, struct InfoSite *pSite )
    {
    // AFX_MANAGE_STATE is needed because dialog boxes call MFC and use resources
    // similar line should be added to any other function exported by the plugin
    // if only the function calls MFC or uses DLL resources
    //AFX_MANAGE_STATE( AfxGetStaticModuleState() );

    /*
    ** Here a config dialog may be called

    CConfigDlg oDlg;

    oDlg.DoModal();

    **
    */

    //AfxMessageBox("Configure button clicked");

    return 1;
    }

    PLUGINAPI AmiVar GetExtraData( LPCTSTR pszTicker, LPCTSTR pszName, int nArraySize, int nPeriodicity, void* (*pfAlloc)(unsigned int nSize) )
    {
    // default implementation does nothing

    AmiVar var;

    var.type = VAR_NONE;
    var.val = 0;

    return var;
    }

    PLUGINAPI int SetTimeBase( int nTimeBase )
    {
    // only intraday intervals are supported
    return ( nTimeBase < ( 24 * 60 * 60 ) ) ? 1 : 0;
    }

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Si, ça suffit.

    Et ton code est de toute évidence du C++ utilisant la bibliothèque Microsoft Foundation Classes (MFC).

    Et du mauvais C++, car tu y utilises des fonctions C qui n'ont pas lieu de l'eêtre en C++ :
    • Typiquement, en C++ standard, on n'utilise pas fopen() mais un objet de type std::ofstream.
    • Et typiquement, sous MFC, on n'utilise ni fopen() ni std::ofstream, mais un objet de type CFile ou CStdioFile, selon l'emploi qu'on veut en faire (CStdioFile est plus approprié pour les fichiers texte).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 30/10/2014, 16h28
  2. Réponses: 2
    Dernier message: 18/02/2009, 11h11
  3. Identificateur non déclaré : 'Null'
    Par Mofid04 dans le forum Bases de données
    Réponses: 4
    Dernier message: 12/03/2006, 11h47
  4. Problème d'identificateur non déclaré
    Par renorx dans le forum Débuter
    Réponses: 3
    Dernier message: 14/11/2005, 20h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo