问题列表 - 第27542页

GCC析构函数行为

我注意到在linux下编译并使用mingw进行交叉编译时,gcc的析构函数的行为有所不同.

在linux上,析构函数不会被调用,除非程序自己正常终止(返回main).我想如果考虑到信号处理程序,那是有道理的.

但是,在Win32上,如果程序以CTRL-C结束,则会调用析构函数,但在从任务管理器中终止时则不会.

为什么是这样?无论进程如何终止,你会建议让析构函数被调用 - 特别是在Win32上?

示例代码:

#include <stdio.h>

int main(int argc, char **argv) {
        printf("main\n");
        while(1) {}
    return 0;
}

__attribute__((destructor)) static void mydestructor(void) {
        printf("destructor\n");
}
Run Code Online (Sandbox Code Playgroud)

c gcc destructor mingw

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

setDelegate:self,它是如何工作的?

我有一个关于代表如何工作的问题.我的理解是,代表们负责代表另一个对象完成某些任务.

locationManager = [[CLLocationManager alloc] init]; 
[locationManager setDelegate:self];
[locationManager setDistanceFilter:kCLDistanceFilterNone];
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
[locationManager startUpdatingLocation];
Run Code Online (Sandbox Code Playgroud)

我是否正确地认为在上面的示例代码中,CLLocationManager的实例是在新线程上创建的,以便它可以继续尝试查找所需的位置信息.当它完成任务(或遇到错误)时,它会使用位于self中的相应方法进行回调

locationManager:didUpdateToLocation:fromLocation:
Run Code Online (Sandbox Code Playgroud)

当事情发生时,本质上locationManager发送消息self(符合正确的委托协议)

欢呼加里

iphone cocoa-touch objective-c

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

.NET互操作COM DLL在VB6调试器中的行为有所不同

我有一个.NET v2.0 Dll,它向COM公开了几个类.该程序集称为BLogic.DLL

我从传统的visual basic 6.0应用程序中调用这些类.我可以生成和EXE文件,如果我在与EXE相同的文件夹中有Blogic.dll,程序运行顺利.

但是,如果我尝试在VB6调试器中启动相同的程序,我得到一个:

   Automation Error    
   The system cannot find the file specified
Run Code Online (Sandbox Code Playgroud)

我假设当我在调试器中运行时,找不到PLogic.dll文件.我尝试将它放在System32文件夹中,和VB6.EXE文件相同的文件夹,但我仍然得到相同的错误.

其他可能有用的事实:

PLogic.dll不是强名称程序集.它取决于没有强烈签名的第三方引用,所以VS不允许我强烈签名.但是,第三方功能不是由VB6代码调用的,并且它不是ComVisible.

.net vb6 com interop

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

调用ac函数时获取lua命令

假设我在Lua中将许多不同的函数名注册到C中的相同函数.现在,每次调用我的C函数时,有没有办法确定调用了哪个函数名?

例如:

int runCommand(lua_State *lua)
{
  const char *name = // getFunctionName(lua) ? how would I do this part
  for(int i = 0; i < functions.size; i++)
    if(functions[i].name == name)
      functions[i].Call()
}

int main()
{
  ...

  lua_register(lua, "delay", runCommand);
  lua_register(lua, "execute", runCommand);
  lua_register(lua, "loadPlugin", runCommand);
  lua_register(lua, "loadModule", runCommand);
  lua_register(lua, "delay", runCommand);
}
Run Code Online (Sandbox Code Playgroud)

那么,我如何获得所谓的函数的名称呢?

c c++ lua

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

收益率和默认情况|| 不输出默认情况

我有一个简单的yield用例,由于某些未知原因,默认情况从未显示:

在我的super_admin布局中,我有:

<%= yield :body_id || 'super_admin_main' %>
Run Code Online (Sandbox Code Playgroud)

我的控制器

class Superadmin::GolfsController < ApplicationController
  layout "super_admin"

  def show 

  end
end
Run Code Online (Sandbox Code Playgroud)

我的秀视图

有还是没有

<% content_for(:body_id) do %>sadmin_golfs<% end %>
Run Code Online (Sandbox Code Playgroud)

随着:sadmin_golfs显示.

without:显示空字符串而不是super_admin_main

任何人都可以重现相同的行为吗?

ruby ruby-on-rails view ruby-on-rails-3

9
推荐指数
2
解决办法
4960
查看次数

在C#中存储永不改变的静态数据的最佳方法是什么

我有一个类,它在asp.net c#应用程序中存储数据,永远不会改变.我真的不想把这些数据放在数据库中 - 我希望它留在应用程序中.这是我在应用程序中存储数据的方法:

public class PostVoteTypeFunctions
{
    private List<PostVoteType> postVotes = new List<PostVoteType>();
    public PostVoteTypeFunctions()
    {
        PostVoteType upvote = new PostVoteType();
        upvote.ID = 0;
        upvote.Name = "UpVote";
        upvote.PointValue = PostVotePointValue.UpVote;
        postVotes.Add(upvote);

        PostVoteType downvote = new PostVoteType();
        downvote.ID = 1;
        downvote.Name = "DownVote";
        downvote.PointValue = PostVotePointValue.DownVote;
        postVotes.Add(downvote);

        PostVoteType selectanswer = new PostVoteType();
        selectanswer.ID = 2;
        selectanswer.Name = "SelectAnswer";
        selectanswer.PointValue = PostVotePointValue.SelectAnswer;
        postVotes.Add(selectanswer);

        PostVoteType favorite = new PostVoteType();
        favorite.ID = 3;
        favorite.Name = "Favorite";
        favorite.PointValue = PostVotePointValue.Favorite;
        postVotes.Add(favorite);

        PostVoteType offensive = …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc

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

"死牛肉"是什么意思?

"死牛肉"这个词是什么意思?我是从面试问题中读到的.它与ipv6有关.我想它可能是一个随机的十六进制数字用于例子,如"快速的棕色狐狸跳过懒狗".

我的理解是否正确?或者它有更重要的意义?

ipv6

85
推荐指数
5
解决办法
9万
查看次数

Perl,将哈希转换为数组

如果我在Perl中有一个包含完整和顺序整数映射的哈希(即,从0到n的所有键都被映射到某个东西,除此之外没有键),是否有将其转换为数组的方法?

我知道我可以遍历键/值对并将它们放入一个新的数组,但有些东西告诉我应该有一个内置的方法来做到这一点.

arrays perl hash

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

Collections.min/max方法的签名

在Java中,Collections类包含以下方法:

public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> c)
Run Code Online (Sandbox Code Playgroud)

它的签名因其对泛型的高级使用而闻名,因此在Java的Nutshell书籍和官方的Sun Generics Tutorial中都提到了它.

但是,我无法找到以下问题的令人信服的答案:

为什么类型的形式参数Collection<? extends T>,而不是Collection<T>?还有什么好处?

java generics wildcard

15
推荐指数
2
解决办法
1577
查看次数

适用于嵌入式设备的良好开源SNMP代理

我们正在尝试评估嵌入在设备上的一些优秀的开源snmp代理.任何时间测试和健壮的建议?-Sathia

open-source snmp

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