对,基本清单如下:
- 是否
MyStrCmp.c
包含MyStr.h
文件:#include "MyStr.h"
应该在文件的顶部(和#include <stdio.h>
旁边#include <stdlib.h>
)
- 做
MyStr.c
同样的事情吗?我的意思是包含它自己的头文件(#include "MyStr.h"
)
- 提到的 3 个文件( 和 )是否
MyStrCmp.c
在MyStr.c
同一MyStr.h
目录中?
- 您是否将
MyStrCmp.c
文件和MyStr.c
文件都传递给gcc?
如果所有这 4 个问题的答案都是肯定的,那么:
$ gcc -o MyStrCmp -Wall MyStrCmp.c MyStr.c -std=c99
应该管用。由于您编写inputLen
函数的方式 (in MyStr.c
),它被编写为可以在外部编译的文件,或者单独编译 ( gcc -o MyStr.c
,以生成 o 文件)。因此,必须通过将两个源文件都传递给编译器来显式完成链接。顺便说一句,可以在这个重复的问题
中找到更多详细信息。
基本上,打开一个终端窗口,然后输入以下命令:
$ mkdir test
$ cd test/
$ touch MyStr.c && touch MyStr.h && touch MyStrCmp.c
$ vim MyStr.c MyStr.h -O
我使用 Vim,你可以使用你喜欢的编辑器,但这不是重点。
在MyStr.h
文件中,您键入:
int inputLen(char* myStr);
保存并关闭它,然后编辑MyStr.c
文件,并定义您的实际功能:
#include "MyStr.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int inputLen(char *myStr)
{
printf("%s\n", myStr);
return strlen(myStr);
}
保存并关闭,然后编辑MyStrCmp.c
文件,并编写如下内容:
#include <stdio.h>
#include <stdlib.h>
#include "MyStr.h"
int main(int argc, char **argv )
{
const char *test = "Some test-string";
int l = 0;
l = inputLen(test);
printf("The printed string is %d long\n", l);
return EXIT_SUCCESS;
}
然后使用我上面提供的命令进行编译。这对我来说很好......