func.h
void in(){}
func.cpp
void in(){
printf("HelloWorld");
}
main.cpp
#include "iostream"
#include "func.h"
int main(){
in();
}
error C3861: 'printf': identifier not found
この問題を解決するのを手伝ってください、ありがとう
func.h
void in(){}
func.cpp
void in(){
printf("HelloWorld");
}
main.cpp
#include "iostream"
#include "func.h"
int main(){
in();
}
error C3861: 'printf': identifier not found
この問題を解決するのを手伝ってください、ありがとう
ソースファイルfunc.cpp
は#include <cstdio>
、使用する前#include <stdio.h>
に宣言する必要があります。printf()
では<cstdio>
、 namespace を使用できるようになるため、行の後にstd
記述するか、関数名のプレフィックスとして使用することができます。using namespace::std;
#include
std::
も必要#include "func.h"
ですfunc.cpp
。
func.cpp
- オプション1#include <cstdio>
#include "func.h"
void in()
{
std::printf("HelloWorld");
}
func.cpp
— オプション 2#include <cstdio>
#include "func.h"
using namespace std;
void in()
{
printf("HelloWorld");
}
func.cpp
— オプション 3#include <stdio.h>
#include "func.h"
void in()
{
printf("HelloWorld");
}
オプション 1 がおそらく推奨されるオプションです。
また、関数の空の関数本体が本当に必要な場合を除き、ヘッダーは関数を定義するのではなく宣言する必要があります。その場合、ソース ファイルはまったく必要ありませんfunc.cpp
。
void in();
通常、ヘッダーは複数の包含から保護する必要があります。今回は害はありませんが、良い習慣を学ぶことをお勧めします。
#ifndef FUNC_H_INCLUDED
#define FUNC_H_INCLUDED
void in();
#endif /* FUNC_H_INCLUDED */