2013-10-10 4 views
1

Это часть программы, в которой я вызываю функцию, которая читает компоненты из файла «.dat» и сохраняет входные данные для членов Struct. Когда я пытаюсь вызвать функцию из моего main.c, она дает различные ошибки в зависимости от того, что я пытаюсь. В первую очередь: конфликтующие типы «ReadFile» и слишком мало аргументов для функции «ReadFile». Я также получаю предупреждение «Передача аргумента из« ReadFile »делает целое число из указателя без cast» и некоторой информации.Почему я не могу назвать свою функцию (C)?

Это main.c

#include "MyData.h" 
#include "NodalA.h" 
#include "FileHandling.h" 
#include <stdio.h> 
#include "windows.h" 

int main(){ 

    ComponentType *CircuitData; 
    int numComp = 6; 
    int numEl = 0; 
    int numNodes = 0; 
    CircuitData = malloc((numComp)*sizeof(ComponentType)); 
    ReadFile(CircuitData, &numEl, &numNodes); 

    return 0; 
} 

Это FileHandling.c:

#include "FileHandling.h" 
#include "stdio.h" 

void ReadFile(ComponentType *CircuitData, int *numEl, int *numNodes){ 
    numEl = 0; 
    numNodes = 0; 

    int index = 0; 

    FILE *data; 
    data = fopen("mydata.dat", "r"); 

    if (data == NULL){ 
     printf("Error: \"mydata.dat\" could not be opened"); 
    } 
    else { 
     while(!feof(data)){ 
      fscanf(data, "%s, %s, %s, %f", CircuitData[index].name, CircuitData[index].node1, CircuitData[index].node2, CircuitData[index].value); 

      *CircuitData[index].node1 = extractInteger(CircuitData[index].node1); 
      *CircuitData[index].node2 = extractInteger(CircuitData[index].node2); 

      if(*CircuitData[index].node1 > *numNodes) 
       *numNodes = *CircuitData[index].node1; 

      if(*CircuitData[index].node2 > *numNodes) 
       *numNodes = *CircuitData[index].node2; 

      numEl++; 
      index++; 
     } 
    } 

    fclose(data); 
} 

И это MyData.h

#ifndef MYDATA_H_ 
#define MYDATA_H_ 


typedef struct Comp{ 
    char name[5]; //Name of circuit component 
    char node1[5], node2[5]; //2 nodes 
    float value[5]; //value 
}ComponentType; 

#endif /* MYDATA_H_ */ 

Любая помощь будет оценена. Есть больше кода, но я думаю, что это самая важная часть.

+0

какие ошибки вы получаете? –

+0

Обратите внимание, что большинство компиляторов C не прерывают компиляцию первой ошибки, что означает, что ваша ошибка может быть не связана с объявлением функции. – Mauren

+2

У меня такое чувство, что ваш 'ReadFile' сталкивается с другим' ReadFile', который существует в API-интерфейсах Windows. Не могли бы вы разместить весь журнал сборки? –

ответ

0

Имя функции ReadFile, используемое в программе, такое же, как функция ReadFile в «windows.h». Ошибка «слишком мало аргументов для функции ReadFile», скорее всего, вызвана тем, что программа пытается вызвать функцию из окон с неправильными аргументами. Удаление «windows.h» или переименование функции ReadFile на что-то другое решает проблему.

Смежные вопросы