FILE1.Cのextern "C" エラー原因 "期待を '(' 文字列定数の前に"
int add(int a, int b)
{
return (a+b);
}
file2.cpp
void main()
{
int c;
c = add(1,2);
}
h1.h
extern "C" {
#include "stdio.h"
int add(int a,int b);
}
ケース1: 含める場合h1.hfile1.cファイルの場合、gccコンパイラは "expected '('文字列定数の前に '')というエラーをスローします。
ケース2: 私はh1.hでfile2.cppファイルのコンパイル作業を含め、正常
質問:
1)それは私がCのヘッダファイルをインクルードすることができないことを意味していますそれにextern "C"関数がありますか?
extern "C" {
#include "abc.h"
#include "...h"
}
3の下に示すように
2)は、私は私がCファイルにそれを呼び出すことができるようにすることができます私はのextern「C」とのヘッダファイルに++の関数定義をCを置く)はextern「C」内ヘッダ含むことができ、 ?例えば
a.cpp(CPPファイル)
void test()
{
std::printf("this is a test function");
}
ああ(ヘッダーファイル)
extern "C" {
void test();
}
b_c.c(Cファイル)
#include "a.h"
void main()
{
test();
}
http://stackoverflow.com/questions/3329159/including-c-headers-inside-ac-program –
'extern" C "はC++の機能です:http://en.cppreference.com/w/ cpp/language/language_linkage – UnholySheep