我正在尝试编写这样的代码:(未完成)
#include"header.h"
#include<stdlib>
#include<stdio.h>
#include<libpq-fe.h>
#include<string>
int main(){
std::string pguser = "XYZ";
std::string pgpassword = "XYZ";
std::string pghost="XYZ";
std::string pgdbname = "XYZ";
int i;
PGconn *conn;
PGresult *res;
connstr = "user=";
connstr += pguser;
connstr +="password=";
connstr += pgpassword;
connstr +="host=";
connstr += pghost;
connstr +="dbname=";
connstr += pgdbname;
//DB-Login
conn = db_login(const string &user, const string &password, const string &host, const string &dbname);
if(conn == true){
printf("LOGIN SUCCESFULLY");
}else{
printf("LOGIN FAILED");
}
return 0;
}
我的Header.h
#ifndef DB_H
#define DB_H
#include <string>
using namespace std;
int db_login(const string &user, const string &password, const string &host, const string &dbname);
#endif
我只想测试它(sudo gcc main.c header.h -o test) 我得到的结果是:没有这样的文件或目录#include string
我搜索了一个解决方案并尝试了但是我得到了同样的错误。 (还安装了 - &gt; sudo apt-get install build-essential )
请帮助
答案 0 :(得分:3)
您正在编写C ++代码,但尝试将其编译为C - import subprocess
import threading
import random
# We may need to guard this?
child = subprocess.Popen('cat', stdout=subprocess.PIPE, stdin=subprocess.PIPE)
# Continuously print what the process outputs...
def print_child():
for line in child.stdout:
print(line)
child_reader = threading.Thread(target = print_child)
child_reader.start()
for i in range(10000):
chars = 'ABC\n'
child.stdin.write(random.choice(chars).encode())
# Send EOF.
# This kills the cat.
child.stdin.close()
# I don't think order matters here?
child.wait()
child_reader.join()
是C语言前端,因此请改用gcc
。同时将源文件从g++
重命名为.c
,以获得.cpp
的自动支持。
答案 1 :(得分:2)
#include<string>
是C ++标题。您在.c文件中使用C ++代码,这是不正确的。您可能应该将main.c重命名为main.cpp并使用g ++而不是gcc
答案 2 :(得分:0)
对于遇到此问题并使用make而不是显式调用gcc的用户:
make VERBOSE=1
将指示其gcc还是g ++