模块化开发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。。