您好我已经创建了四个文件fn.cpp header.h,main.cpp和makefile 我得到两个错误PLZ帮助解决它。
fn.cpp:1错误:字符串未在此范围内声明?为什么呢?
fn.cpp:2错误:预期','或';'在'{'令牌之前?
header.h:
#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
int fn(string);
main.cpp中:
#include "header.h"
string s= " hello world";
int main()
{
fn(s):
}
fn.cpp:
int fn(string ss)
{
printf("%s",ss);
}
生成文件:
all:hello
hello:main.o fn.o
tab g++ main.o fn.o-o hello
main.o:main.cpp
tab g++ -c main.cpp
fn.o:fn.cpp
tab g++ -c fn.cpp
答案 0 :(得分:1)
std::string
类在<string>
标头中定义。包括而不是C库的<string.h>
标题。
此外,您需要在两个源文件中包含"header.h"
。
最后,您无法将string
对象直接传递给printf
;这是一个对C ++类一无所知的C函数。使用C ++ I / O:
std::cout << ss;
或使用C风格的字符串:
printf("%s", ss.c_str());
答案 1 :(得分:0)
使用标题#include <string>
并尽可能避免printf
,更好地使用cout
c ++爱好者会更喜欢这个:
fn.h
#include<string>
void fn(const std::string&);
fn.cpp
#include <stdio.h>
#include "fn.h"
void fn(const std::string& ss)
{
printf(ss.c_str());
}
HELLO.CPP
#include "fn.h"
std::string s = " hello world";
int main()
{
fn(s);
}
生成文件
all: hello
hello: hello.cpp fn.o