模块化开发c

模块化开发c,c,linux,C,Linux,我有一个关于这个代码的任务 #include <stdlib.h> #include <string.h> int writeLog(char const *text) { char *auxText = strdup(text); if(auxText==NULL) return -1; char *ptr = auxText + strlen(text); do{ --ptr; if(*ptr=='\n' || *ptr=='\r') *ptr =

我有一个关于这个代码的任务

#include <stdlib.h>
#include <string.h>
int writeLog(char const *text)
{
 char *auxText = strdup(text);
 if(auxText==NULL)
 return -1;

 char *ptr = auxText + strlen(text);

 do{
 --ptr;
 if(*ptr=='\n' || *ptr=='\r')
 *ptr = 0;
 } while(ptr!=auxText);
 if(strlen(auxText)==0)
 {
 free(auxText);
 return -1;
 }

 FILE *fp = fopen("log.txt","a");
 if(fp==NULL)
 {
 free(auxText);
 return -1;
 }

 fprintf(fp, "%s\n", auxText);
 free(auxText);
 return 0;
}

#包括
#包括
int writeLog(字符常量*文本)
{
char*auxText=strdup(文本);
if(auxText==NULL)
返回-1;
char*ptr=auxText+strlen(文本);
做{
--ptr;
如果(*ptr=='\n'| |*ptr=='\r')
*ptr=0;
}while(ptr!=auxText);
if(strlen(auxText)==0)
{
免费(auxText);
返回-1;
}
文件*fp=fopen(“log.txt”,“a”);
如果(fp==NULL)
{
免费(auxText);
返回-1;
}
fprintf(fp,“%s\n”,auxText);
免费(auxText);
返回0;
}
这是utils.c文件

和主要的.c文件:


#include <stdio.h>
#include "utils.h"
int main(int argc, char *argv[]) {
 writeLog("teste");

 return 0;
}
  

#包括
#包括“utils.h”
int main(int argc,char*argv[]){
书面记录(“测试”);
返回0;
}
但当我这样做时:$cc main.c utils.c-o myapp

告诉我这个错误:


您应该在同一目录中创建一个文件utils.h,包含以下内容:

#pragma once
int writeLog(const char* text);

您的问题是main.c找不到此文件-#include正在尝试打开该文件并将其内容粘贴到main.c

您必须在
utils.h
中拥有
writeLog
的原型。您已经显示了一个utils.c文件。您没有显示utils.h文件吗?有吗?与带有
#inlcude
的.c文件相关的文件位于何处?您希望从这行
#include“utils.h”
#中得到什么效果?谢谢:)并看到它可以防止重新定义,就像#ifndef MY#u FILE#。。。这就是为什么我把它放在那里,它应该可以在现代编译器上使用-我见过它们在GCC和Cmake中工作,但不能测试MSVC。。