函数声明不是原型

时间:2016-12-18 12:23:07

标签: c linux

我收到错误,该函数声明不是原型, 字段“get_current”声明为函数

但我的代码中根本没有get_current字段。

#ifndef FILESFUNCTIONS_H_INCLUDED
#define FILESFUNCTIONS_H_INCLUDED

#define NB_MAX_TRANSITIONS 20
#define FILE_NAME_SIZE 25

typedef struct Page_Descriptor Page_Descriptor;
typedef struct Transition Transition;
typedef struct Transitions_Graph Transitions_Graph;
typedef struct File_Descriptor File_Descriptor;
typedef struct File_Descriptors_List File_Descriptors_List;

//La liste des descripteurs de fichier
struct File_Descriptors_List{
  File_Descriptor* head;// Pointeur vers le premier élement de la liste.
  File_Descriptor* current;
  unsigned int nbFiles; // nombre de descripteurs de fichier dans la liste.
};

// La structure descripteur de fichier.
struct File_Descriptor
{
  char* file_name; // Nom du fichier
  Transitions_Graph* transition_graph; // le graphe de transition des pages.
  File_Descriptor* next; // pointeur vers le prochaine fichier dans la liste.
};

//Le graphe des transitions
struct Transitions_Graph{
  Page_Descriptor* head; // le premier noeud du graphe de transitions.
  Page_Descriptor* current_page; // la dernière page utilisée dans le graphe.
};

// Le descripteur qui contient les informations sur chaque page.
struct Page_Descriptor
{
  //int page_number; // Identifiant de la page
  int page_offset; // Offset de la page
  int nb_From_Transitions;// Le nombre des transitions à partir de cette page
  int visited; //Etat de la page dans le parcours de l'affichage pour eviter le repassage sur la même page.
  Transition* next_transitions;// Vecteur qui contient des pointeurs vers les pages suivantes
  int index_Transition_Table;//Le nombre de pages suivantes.
};

// La definition d'une transition d'une page à une autre.
struct Transition
{
    int nb_To_Transitions;//number of transitions to this page
    Page_Descriptor* next_page;
};
#endif // FILESFUNCTIONS_H_INCLUDED

我不知道发生了什么,因为我在Windows上使用了codeBlocks,但在Linux中使用gcc进行编译却没有。

https://i.stack.imgur.com/m7p9k.png

1 个答案:

答案 0 :(得分:1)

在标头文件asm/current.h中,定义了函数get_current(),然后current宏为#define d:

#define current get_current()

此头文件本身是#include头文件中的linux/sched.h。您尚未提供#include个文件的列表,但我怀疑您将此头文件作为#include直接或间接提供。

您需要在程序的这一行更改current

File_Descriptor* current;

避免不必要的宏扩展。