我遇到了这样的问题:
我有一个头文件:
//first variant:
#ifndef LIBRARIES_H
#define LIBRARIES_H
const char a='4';
#endif // LIBRARIES_H
Run Code Online (Sandbox Code Playgroud)
我将它包含在几个.cpp文件中.一切都很完美.
但突然间,如果我宣布一个指针:
//second variant:
#ifndef LIBRARIES_H
#define LIBRARIES_H
const char *a="asdfgh";
#endif // LIBRARIES_H
Run Code Online (Sandbox Code Playgroud)
请注意,我只声明其中一个(变种).
我只宣告了一次(我试图更改sadfgh或asdfg的名称).
当我尝试第二个变体时,我先删除,反之亦然.
如果我声明一个指向字符串的指针,我将得到错误"多次包含变量".我用qt编译它.我已经删除并重新编译了几次项目.

当然,我可以在main()函数中定义它,但我想知道,这个问题的原因是什么?为什么我不能在头文件中声明指针,然后将它包含在几个源代码文件中?
我untitled1.cpp使用以下脚本创建了一个名为dev-cpp 的文件:
#include <iostream.h>
using namespace std;
int main(){
cout << "C++";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但编译器显示如下错误:
1 F:\ Dev-Cpp\include\c ++\3.4.2\backward\iostream.h:31,
来自F:\ Dev-Cpp\Untitled1.cpp in include/c ++/3.4.2/backward/iostream中包含的文件.h:31,来自F:\ Dev-Cpp\Untitled1.cpp 32:2 F:\ Dev-Cpp\include\c ++\3.4.2\backward\backward_warning.h #warning此文件至少包含一个已弃用或过时的文件头.请考虑使用C++标准第17.4.1.2节中的32个标头之一.示例包括将标头替换为C++包含的标头,或者代替不推荐使用的标头.要禁用此警告,请使用-Wno-deprecated.
我有什么错误?我如何解决它?
我想在C++中执行以下操作:
static const char* data[] = { #include "mydata.hh" };
Run Code Online (Sandbox Code Playgroud)
其中mydata.hh的内容应该被指定为数据的char数组.我已经尝试了#include的各种变体和(一级和两级)字符串化#x.到目前为止没有工作.这实际上是可能的还是我错过了什么?
谢谢你.
目前,作为一个例子,我在我的一个页面上有这个PHP代码.
<?php include("codes/games/scripts/titles/angrybirds.php"); ?>
Run Code Online (Sandbox Code Playgroud)
如何更改此更改以使我的变量:
$gametitle = "angrybirds";
Run Code Online (Sandbox Code Playgroud)
像这样工作:
<?php include("codes/games/scripts/titles/$gametitle.php"); ?>
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助!
我有一个循环引用的问题(即啊和Bh #including彼此),有些人建议我使用#pragma一次来防止这种情况.但是,此解决方案似乎仍然无效.
发生的事情是A类不再在Ah以外的任何文件中被识别(甚至不在A.cpp中),B类也是如此.
我来告诉你代码:
啊
#pragma once
#include "B.h"
class A {
public: B* b;
};
Run Code Online (Sandbox Code Playgroud)
BH
#pragma once
#include "A.h"
class B {
public: A* a;
};
Run Code Online (Sandbox Code Playgroud)
A.cpp
#include "stdafx.h"
#include "A.h"
#include "B.h"
Run Code Online (Sandbox Code Playgroud)
B.cpp与A.cpp相同
错误跟踪如下:
1> B.cpp 1> c:\ users\user\documents\visual studio 2010\projects\envmodel\test\bh(5):错误C2143:语法错误:缺少';' 在' '1>之前c:\ users\user\documents\visual studio 2010\projects\envmodel\test\bh(5):错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int 1> c:\ users\user\documents\visual studio 2010\projects\envmodel\test\bh(5):错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int 1> A.cpp 1> c:\ users\user\documents\visual studio 2010\projects\envmodel\test\bh(5):错误C2143:语法错误:缺少';' 在' '1> 之前 c:\ users\user\documents\visual studio 2010\projects\envmodel\test\bh(5):错误C4430:缺少类型说明符 - …
我有一个图书网站,并希望为每本书创建文件夹.例如,
www.mydomain.com/book1
www.mydomain.com/book2
www.mydomain.com/book3
Run Code Online (Sandbox Code Playgroud)
每个书页都是相同的格式,只有书名和作者等会通过从数据库中提取数据而改变.因此,创建一个index.php文件并将其复制到所有书籍文件夹是我的想法.而index.php可以是:
include "include_book_format.php";
Run Code Online (Sandbox Code Playgroud)
因此,书页的格式将在"include_book_format.php"中.
这是一个好的设计还是有任何方法可以更有效地创建它?谢谢...
我正在使用visual studio 2010开发一个C++程序.我有这些类定义和头文件:
sh:
class s : oe {
...
};
Run Code Online (Sandbox Code Playgroud)
th:
class t : oe {
...
};
Run Code Online (Sandbox Code Playgroud)
oe.h:
class oe {
...
o getO();//we reference to class 'o' in oe.h, so we must include o.h begore oe.h
};
Run Code Online (Sandbox Code Playgroud)
哦,哦:
class o {
...
s getS();//we reference to class 's' in o.h, so we must include s.h begore o.h
};
Run Code Online (Sandbox Code Playgroud)
问题是,我们参照"O"级的oe.h,所以我们必须包括o.h之前oe.h,和我们也参考类的' o.h,所以我们必须包括s.h前o.h,但我们不能这样做,因为s.h需要oe.h和oe.h需求 …
我只是学习输入/输出流的基本方面,似乎无法让我的程序读取文本文件.它给了我错误,表明它正在尝试将.txt文件作为C++代码读取,而我只是在那里使用值来测试我的流.
这些是我包含的.txt文件的内容:
12345
Success
Run Code Online (Sandbox Code Playgroud)
这是主程序的代码:
#include <fstream>
#include <iostream>
#include "C:\Users\Pavel\Desktop\strings.txt"
using namespace std;
int main (int nNumberOfArgs, char* pszArgs[])
{
ifstream in;
in.open("C:\Users\Pavel\Desktop\strings.txt");
int x;
string sz;
in << x << sz;
in.close();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我收到的第一条错误消息是"数字常量之前的预期非限定id",它告诉我程序正在尝试编译包含的文件.如何防止这种情况并将文本文件按预期读取?
我的具体示例使用以下子句:
#include <string>
Run Code Online (Sandbox Code Playgroud)
如果我使用以下条款
#include <string.h>
Run Code Online (Sandbox Code Playgroud)
编译器以错误结束
[BCC32错误] utils.cpp(173):E2316'getline'不是'std'的成员
utils.cpp文件中的第173行如下:
while(std::getline(in, line, '\n'))
Run Code Online (Sandbox Code Playgroud)
我认为这两个条款没有区别.现在我很困惑.这两个条款实际上包含哪些文件?可以说,我的C++ Builder安装程序目录为C:\ Program Files\RAD Studio\9.0,包含文件位于子目录C:\ Program Files\RAD Studio\9.0\include中.
允许一个人做:
main.php:
//some code....
include "main.php";
//some more code....
Run Code Online (Sandbox Code Playgroud)
这不会导致问题吗?
PHP是否允许这种情况发生?如果确实如此,这样做有什么理由呢?
include ×10
c++ ×7
php ×3
iostream ×2
char ×1
class ×1
declaration ×1
dependencies ×1
deprecated ×1
directory ×1
header ×1
pointers ×1
pragma ×1
stringify ×1
text-files ×1
variables ×1