问题列表 - 第24568页

为什么C++回调C函数需要"extern C"?

我在Boost代码中找到了这样的例子.

namespace boost {
   namespace {
     extern "C" void *thread_proxy(void *f)
     {
       ....
     }

   } // anonymous
   void thread::thread_start(...)
   {
       ...
       pthread_create(something,0,&thread_proxy,something_else);
       ...
   }
} // boost
Run Code Online (Sandbox Code Playgroud)

你为什么真的需要这个extern "C"

很明显,该thread_proxy函数是私有内部的,我不认为它会被破坏为"thread_proxy",因为我实际上根本不需要它.

实际上,在我编写的所有代码中,我在许多平台上运行,我从未使用过,extern "C"而且这个代码与普通函数一样正常.

为什么要extern "C"添加?


我的问题是extern "C"函数污染了全局命名空间,并且它们实际上并没有像作者所期望的那样被隐藏.

这不是重复的! 我不是在谈论破坏和外部联系.在此代码中很明显,外部链接是不需要的!

答: C和C++函数的调用约定不一定相同,因此您需要使用C调用约定创建一个.参见C++标准的7.5(p4).

c c++ callback extern-c

17
推荐指数
3
解决办法
4361
查看次数

多个站点地图:robots.txt中的条目?

我一直在搜索谷歌,但我找不到这个问题的答案.

robots.txt文件可以包含以下行:

Sitemap: http://www.mysite.com/sitemapindex.xml
Run Code Online (Sandbox Code Playgroud)

但是是否可以在robots.txt中指定多个站点地图索引文件并让搜索引擎识别并抓取每个站点地图索引文件中引用的所有站点地图?例如,这会工作:

Sitemap: http://www.mysite.com/sitemapindex1.xml

Sitemap: http://www.mysite.com/sitemapindex2.xml

Sitemap: http://www.mysite.com/sitemapindex3.xml
Run Code Online (Sandbox Code Playgroud)

sitemap robots.txt

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

如何解码json对象数组

我有一个像这样的json对象数组:

[{"a":"b"},{"c":"d"},{"e":"f"}]

将此转换为php数组的最佳方法是什么?

json_decode将不处理数组部分并返回NULL此字符串.

php parsing json

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

运行具有SPACE字符路径的python批处理文件

批处理文件是这样的,我把python放在一个路径中有SPACE字符的目录中.

C:\"Documents and Settings"\Administrator\Desktop\bracket\python\python 
C:\\"Documents and Settings"\\Administrator\\Desktop\\bracket\\[10,20]\\brackettest.py

当我运行这个时,我得到了这个错误.

C:\Documents and Settings\Administrator\Desktop\bracket\python\python: can't ope
n file 'C:\Documents and Settings\\Administrator\\Desktop\\bracket\\[10,20]\\bra
ckettest.py': [Errno 2] No such file or directory
C:\Documents and Settings\Administrator\Desktop\bracket>

可能有什么问题?

包装路径并不能解决这个问题.

"C:\\Documents and Settings\\Administrator\\Desktop\\bracket\\[10,20]\\brackettest.py"

括号('[]')是否导致问题?在Mac上,python适用于括号字符.

python windows path batch-file

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

我可以为主键设置ignore_dup_key吗?

我在桌子上有一个双列主键.我试图改变它以ignore_dup_key使用此命令将其设置为on:

ALTER INDEX PK_mypk on MyTable
SET (IGNORE_DUP_KEY = ON);
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

Cannot use index option ignore_dup_key to alter index 'PK_mypk' as it enforces a primary or unique constraint.

我该怎么IGNORE_DUP_KEY办?

sql t-sql sql-server database-design sql-server-2008

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

简单的动态面包屑

我觉得这个脚本对这里的任何菜鸟都很感兴趣:)包括我:)

我想创建的是一个小代码,我可以在任何文件中使用,并将生成这样的面包屑:

如果文件名为" website.com/templates/index.php ",则面包屑应显示:

Website.com > Templates
Run Code Online (Sandbox Code Playgroud)

 ^^链接^^纯文本

如果文件名为" website.com/templates/template_some_name.php ",则面包屑应显示:

Website.com > Templates > Template Some Name
Run Code Online (Sandbox Code Playgroud)

 ^^链接^^链接^^纯文本

php dynamic breadcrumbs

19
推荐指数
3
解决办法
11万
查看次数

iphone - 测试对象是否存在

我的应用程序中有几个对象在某些时候可以变为零,我有理论上用于将这些对象设置为零的方法.

但是,如果我尝试将一个不存在的对象放到零,那么应用程序将崩溃.

例如...

[object1 release];
object1 = nil;
Run Code Online (Sandbox Code Playgroud)

//... 在那之后

[object1 removeFromSuperview]; // this will crash
Run Code Online (Sandbox Code Playgroud)

然后我想,为什么不在去除之前测试对象是否存在...

if (object1 != nil)
 [object1 removeFromSuperview]; 
// this will crash too, because object1 cannot be tested for nil because it does not exist
Run Code Online (Sandbox Code Playgroud)

如果对象存在nil,我如何检查对象是否存在?某事

if (object1 exists( {
  if(object1 != nil))
    [object1 removeFromSuperview)
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?

我加上这个澄清......

我的意思是这样的:想象我在标题上声明了object1并在代码上初始化了.因此,它存在并指向有效的参考.在某些时候,对象可能会被释放,因此引用仍然指向一个对象,但对象被释放.即使我在释放后把物体放到零,我也无法用它做任何事情.

问题是:我有一些异步的方法.其中一个扫描某些对象并在找到它们时将其删除.我必须检查对象是否存在,并且引用指向有效对象,然后再次释放它.这就是重点:如何在再次释放对象之前测试对象是否存在及其引用指向有效的现有对象,以及再次释放已释放的对象并使应用程序崩溃.

iphone iphone-sdk-3.0

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

IIS7中的文件安全性(IP地址访问限制)

我有一个包含2个asmx文件的Web服务(public.asmx和private.asmx).在IIS6上,我可以转到private.asmx的属性,然后从"文件安全性"选项卡中拒绝除localhost的IP地址之外的所有计算机访问.

在IIS7中,我似乎只能为整个文件夹执行此操作.我错过了什么?

iis iis-7 iis-6 ip-restrictions

16
推荐指数
2
解决办法
1万
查看次数

从文件中读取,atoi()仅在第一个元素上返回零

我不明白为什么atoi()每个条目都工作,但第一个条目.我有以下代码来解析一个简单的.csv文件:

void ioReadSampleDataUsers(SocialNetwork *social, char *file) {
    FILE *fp = fopen(file, "r");

    if(!fp) {
        perror("fopen");
        exit(EXIT_FAILURE);
    }

    char line[BUFSIZ], *word, *buffer, name[30], address[35];
    int ssn = 0, arg;

    while(fgets(line, BUFSIZ, fp)) {
        line[strlen(line) - 2] = '\0';

        buffer = line;
        arg = 1;

        do {
            word = strsep(&buffer, ";");

            if(word) {
                switch(arg) {
                    case 1:
                        printf("[%s] - (%d)\n", word, atoi(word));
                        ssn = atoi(word);
                        break;
                    case 2:
                        strcpy(name, word);
                        break;
                    case 3:
                        strcpy(address, word);
                        break;
                }

                arg++;
            }
        } …
Run Code Online (Sandbox Code Playgroud)

c csv file-io atoi

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

扩展方法未被认可

如果扩展方法存在于导入的程序集中,有什么必要?我在类库项目中构建了一个,但在我的web项目中无法识别它引用了库.库中的所有其他类和方法都是值得尊重和可见的,但这种扩展方法不是.在库中使用时,扩展方法是可见的.

c# extension-methods

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