我在main.c中使用一个名为header.h的头。
函数测试在header.h中公布,在test.c中定义。
尽管我使用构建系统作为C语言,它还是会在下面写上一些话。

clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
Undefined symbols for architecture x86_64:
  "test(int)", referenced from:
  _main in main-a4d82e.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[Finished in 0.6s with exit code 1]
[cmd: ['bash', '-c', 'g++ -Wall -std=c++11 -O2 \'/Users/hanlock/Documents/CODE/TEST/TEST/main.c\' -o \'/Users/hanlock/Documents/CODE/TEST/TEST/main\' && osascript -e \'tell application "Terminal" to activate do script " cd \\"/Users/hanlock/Documents/CODE/TEST/TEST\\" &&start_ms=$(ruby -e \\"puts (Time.now.to_f * 1000).to_i\\")&&clear&&\\"/Users/hanlock/Documents/CODE/TEST/TEST/main\\" &&elapsed_ms=$(($(ruby -e \\"puts (Time.now.to_f * 1000).to_i\\") - start_ms))&& read -p \\"Press Enter to exit($elapsed_ms ms).\\"&&exit"\'']]
[dir: /Users/hanlock/Documents/CODE/TEST/TEST]
[path: /usr/bin:/bin:/usr/sbin:/sbin]

我在C++中也读到过类似的问题。不过,对我来说,这似乎不起作用。
所以,问题来了。如何在C语言中使用sublime的外部头文件。
代码如下:
主c
#include <stdio.h>
#include "./Header.h"
int main(int argc, const char * argv[]) {
    test(1);
    return 0;
}

标题.h
#ifndef Header_h
#define Header_h
int test(int);
#endif

测试c
#include <stdio.h>
int test(int i){
    printf("%d\n",i);
    return 0;
}

最佳答案

在测试c中:

#include "header.h"

在你的壳里:
gcc -I [dir] test.c

这将包括dir中名为header.h的任何外部头。
我希望这能回答你的问题。

关于c - 如何在C语言中以崇高的文本形式与外部头文件一起编译?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38379528/

10-12 05:10