小编use*_*421的帖子

关于函数的C++ extern关键字.为什么不包含头文件?

如果我理解正确,这意味着

extern void foo();
Run Code Online (Sandbox Code Playgroud)

函数foo在另一个翻译单元中声明.

1)为什么不#include声明此函数的头?

2)链接器如何知道在链接时寻找函数的位置?

编辑:也许我应该澄清上面的声明然后使用该函数

foo();
Run Code Online (Sandbox Code Playgroud)

它从未在此翻译单元中定义.

c++ linker extern

45
推荐指数
4
解决办法
5万
查看次数

Scrapy蜘蛛未找到错误

这是带有python 2.7的Windows 7

我在一个名为caps的目录中有一个scrapy项目(这是scrapy.cfg所在的位置)

我的蜘蛛位于caps\caps\spiders\campSpider.py中

我进入scrapy项目并尝试运行

scrapy crawl campSpider -o items.json -t json
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,指出无法找到蜘蛛.班级名称 campSpider

...
    spider = self.crawler.spiders.create(spname, **opts.spargs)
  File "c:\Python27\lib\site-packages\scrapy-0.14.0.2841-py2.7-win32.egg\scrapy\spidermanager.py", l
ine 43, in create
    raise KeyError("Spider not found: %s" % spider_name)
KeyError: 'Spider not found: campSpider'
Run Code Online (Sandbox Code Playgroud)

我错过了一些配置项吗?

python scrapy

33
推荐指数
4
解决办法
4万
查看次数

为什么需要前瞻性声明?

可能重复:
C++应该删除头文件吗?

在像C#和Java这样的语言中,没有必要在使用它之前声明(例如)一个类.如果我理解正确,这是因为编译器对代码进行了两次传递.在第一个中它只是"收集可用信息",在第二个中它检查代码是否正确.

在C和C++中,编译器只进行一次传递,因此当时所有东西都需要可用.

所以我的问题基本上就是为什么不用C和C++这样做.它不会消除头文件的需求吗?

c c++ compiler-construction declaration

19
推荐指数
2
解决办法
5070
查看次数

从函数返回'c_str'

这是我在网上找到的一个小型图书馆:

const char* GetHandStateBrief(const PostFlopState* state)
{
    static std::ostringstream out;

    // ... rest of the function ...

    return out.str().c_str()
}
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我这样做:

const char *d = GetHandStateBrief(&post);
std::cout<< d << std::endl;
Run Code Online (Sandbox Code Playgroud)

现在,起初d包含垃圾.然后我意识到,当函数返回时,我从函数中获取的C字符串将被销毁,因为它std::ostringstream是在堆栈上分配的.所以我补充说:

return strdup( out.str().c_str());
Run Code Online (Sandbox Code Playgroud)

现在我可以从函数中获取我需要的文本.

我有两个问题:

  1. 我理解正确吗?

  2. 后来我注意到out(类型std::ostringstream)分配了静态存储.这是不是意味着在程序终止之前该对象应该留在内存中?如果是这样,为什么不能访问该字符串?

c c++ c-strings c-str static-allocation

8
推荐指数
1
解决办法
5056
查看次数

为什么C和C++ IDE工具支持可用于托管平台?

如果您使用过任何体面的java或.net IDE,您可以看到它们提供的丰富功能,这些功能要么在c/c ++ IDE中不存在,要么以更有限的形式存在.

我正在考虑以下功能:

  • 代码完成
  • 语法错误(和编译错误,无需编译)
  • 重构
  • 调试(调试器可以向您显示有关对象的信息量)
  • 代码探索和分析(查看类型层次结构,调用此函数等...)

托管语言的主要特征是什么,使他们能够提供这种(大多数人会说)在工具方面的卓越支持?

.net c c++ java ide

5
推荐指数
2
解决办法
325
查看次数

如何确定为什么连接的主机与 Chrome 中的请求 URL 不同?

尝试连接到 bookdepository.com 我偶尔会注意到,在登陆该网站之前,我通过一些阴暗的附属链接被重定向。我在地址栏中输入域并按回车键,呼叫首先通过一个名为的域,www.httpslink.me然后重定向到 go.magik.ly,然后到 awin 联盟网络,最后到 bookdepository。这是初始请求的屏幕截图:

在此处输入图片说明

我试图弄清楚为什么会发生这种情况。您可以看到,虽然请求 URL 是 bookdepository,但联系的主机是 httpslink.me。我的问题是什么决定了将要联系的主机。我通过 chrome://net-export/ 记录了网络流量,但没有提到对 bookdepository 的初始请求,它直接转到 httpslink.me

networking redirect google-chrome

5
推荐指数
0
解决办法
537
查看次数

在C++中按值返回的原因是什么

因为按值返回大多数时候比返回引用效率低,所以有哪些例子按值返回是有意义的还是唯一可行的方法呢?

编辑:我错误地说了我的问题.我知道对于内置类型,通过值返回通常更有效率我主要指的是返回大于指针的用户定义类型的情况.

c++

1
推荐指数
1
解决办法
188
查看次数