vấn đề đơn giản:Simple C lỗi inline mối liên kết
cho chương trình sau đây:
#include <stdio.h>
inline void addEmUp(int a, int b, int * result)
{
if (result) {
*result = a+b;
}
}
int main(int argc, const char * argv[])
{
int i;
addEmUp(1, 2, &i);
return 0;
}
tôi nhận được một lỗi mối liên kết ...
Undefined symbols for architecture x86_64:
_addEmUp", referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
vẻ như nó không bận tâm biên dịch nó.
nó không nên cần phải static
, tôi sẽ không nghĩ rằng, dựa trên những gì tôi đã đọc trong:
Linker error inline function (vì đây là trong một đối tượng khác nhau, và đối phó với 2 định nghĩa chứ không phải là zero)
Đây là một liên kết có liên quan, nhưng nó là C++ và tôi không nghĩ rằng đó là thực hành tốt trong std C để đặt mã trong tiêu đề:
inline function linker error
thông tin biên dịch:
cc --version
Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
Target: x86_64-apple-darwin12.3.0
Thread model: posix
biên soạn dụ:
# cc main.c
Undefined symbols for architecture x86_64:
"_addEmUp", referenced from:
_main in main-sq3kr4.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocatio
lệnh nào bạn đã sử dụng để biên dịch? –
Bạn đang sử dụng trình biên dịch nào? – Evans
nó là clang trong xcode 4.6.2 –