как общаться два файла с - PullRequest
0 голосов
/ 17 октября 2010

Dene2.c

int main ( void )
{
    fprintf ( stdout , "WAİTİNG for a sec to breath\n" ) ;

    #command_go "dene.c"

    return 0 ;
} 

день.c

int main ( void )
{

     void wait ( int ) ;

     getdata ( a );
     showdata ( a );
     **  #command_go  "dene2.c" **

     wait ( seconds );

     return 0;   
  } 

  void getdata ( char * b )
  {
  }
  void showdata ( char * b )
  {
  } 
  void wait ( int seconds )
  {
        clock_t endwait = clock ( );
        endwait = clock ( ) + seconds * CLOCKS_PER_SEC ;
        while ( clock ( ) < endwait ) { }
  }

Я просто хочу соединить два разных файла c, могу ли я сделать когда я пишу что-то вроде #command_go "dene2.c", я хочу активировать другой файл

Ответы [ 3 ]

1 голос
/ 17 октября 2010

Сначала вы должны переименовать main функцию в Dene2.c во что-то другое, поскольку это имя используется для определения точки входа вашего двоичного файла, и у вас не должно быть двух функций с этим имя.

Во-вторых, вы должны написать файл header для Dene2.c с именем Dene2.h , который имеет подпись методов, которые вы хотите вызвать извне. В вашем случае ваш заголовочный файл будет выглядеть примерно так:

int function(void);
// as we said maid needs to be changed to something different

В-третьих, вы добавляете в начале Dene2.c и dene.c директиву include:

#include "Dene2.h"

Теперь вы можете безопасно использовать функцию в dene.c :

...
function();
...
0 голосов
/ 17 октября 2010

Файлы (ну, в действительности, стандарт C говорит о «единицах компиляции») ничего не делают, не выполняют . Их предполагаемое использование состоит в том, чтобы организовать функции в связанных группах. Функции и программы (которые могут состоять из нескольких связанных модулей компиляции) - вот что делают.

Если вы хотите, чтобы одна функция вызывала другую, просто сделайте это. Конечно, вам нужно будет это правильно объявить. Если он находится в отдельном файле, рекомендуемый способ сделать это - создать «файл заголовка» с объявлением, которое может быть #inclined как в файле, реализующем вызываемую функцию, так и в файле с вызывающей функцией.

Если вместо этого вам нужно несколько потоков выполнения, нет переносимого способа сделать это. Это зависит от платформы. В Windows есть набор возможностей для работы с потоками, сведения о которых Microsoft документирует. Большинство платформ Unix используют API, известный как pthreads .

Наконец, вы можете захотеть общаться с двумя разными программами. Это известно как межпроцессное взаимодействие (IPC). Это тоже зависит от платформы.

0 голосов
/ 17 октября 2010

Для этого есть два способа: либо скомпилировать два модуля по отдельности, либо просто выполнить другой файл, используя любой механизм создания процесса, поддерживаемый вашей целевой платформой, или просто объявить обычную функцию во втором модуле (т. Е. dene2.c), вызовите функцию из dene.c и свяжите оба модуля вместе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...