小编Dar*_*con的帖子

如何在路由数据包中使用MAC地址?

我最近发现数据包封装在以太网帧中.数据包使用IP地址,帧使用MAC地址.

为什么以太网帧中没有使用IP地址进行路由?据我所知,在尝试访问基本网站时,计算机会转到DNS以查找与用户输入的域名相关的IP地址.计算机如何找到正确的MAC地址?

真的,MAC地址如何用于路由互联网流量?

谢谢

ip tcp

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

x86_64上的软浮动

我从事没有FPU的嵌入式系统的软件.我希望能够在我的桌面上使用软件浮点库构建此软件,以获得更真实的性能视图.有没有人对如何实现这一点有任何想法?

到目前为止,我在使用-msoft-floatgcc 方面没有取得多大进展.我目前正在使用clang.通过使用标志-Xclang -msoft-float -Xclang -no-implicit-float并指定一个具有soft-float例程实现的库,我可以让我的应用程序进行编译.当我尝试运行它时,它总是会出现段错误.我可以说,这是因为这个程序所依赖的库没有用soft-float编译.该应用程序依赖于gtk,sqlite,expat,gcrypt,许多内部库和libc.

我想试着弄清楚如何构建一个具有soft-float支持的完整构建环境.我尝试了uclibc的buildroot和设置CC以及CXXclang的二进制文件,但由于编译gcc工具链的要求(例如autotools抱怨编译器版本不正确),这不起作用.因为我想在新的buildroot中使用clang作为编译器(为了获得软浮点支持),我认为没有迫切需要构建gcc.没有gcc可以做到这一点吗?

gcc clang cross-compiling

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

生成的标识符对于约束名称来说太长了

我刚刚开始使用Entity Framework(4.3.1),并使用MySQL EF提供程序(6.5.4)创建了具有TPT继承的代码优先模型.在尝试创建数据库结构时,我收到一个MySQLException "Identifier name 'LongClassNameOne_TypeConstraint_From_ClassName2s_To_LongClassNameOnes' is too long"(这是将派生类的表与父类的表相关联的关系.)

   at MySql.Data.MySqlClient.MySqlStream.ReadPacket()
   at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int32& insertedId)
   at MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int32& insertedId)
   at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
   at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
   at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
   at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader()
   at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
   at MySql.Data.MySqlClient.MySqlScript.Execute()
   at MySql.Data.MySqlClient.MySqlProviderServices.DbCreateDatabase(DbConnection connection, Nullable`1 commandTimeout, StoreItemCollection storeItemCollection)
   at System.Data.Objects.ObjectContext.CreateDatabase()
   at System.Data.Entity.Internal.DatabaseOperations.Create(ObjectContext objectContext)
   at System.Data.Entity.Internal.DatabaseCreator.CreateDatabase(InternalContext internalContext, Func`3 createMigrator, ObjectContext objectContext)
   at System.Data.Entity.Internal.InternalContext.CreateDatabase(ObjectContext objectContext)
   at System.Data.Entity.Database.Create()
   at System.Data.Entity.DropCreateDatabaseAlways`1.InitializeDatabase(TContext context)
   at System.Data.Entity.Database.<>c__DisplayClass2`1.<SetInitializerInternal>b__0(DbContext c)
   at System.Data.Entity.Internal.InternalContext.<>c__DisplayClass8.<PerformDatabaseInitialization>b__6()
   at System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action)
   at System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization()
   at System.Data.Entity.Internal.LazyInternalContext.<InitializeDatabase>b__4(InternalContext …
Run Code Online (Sandbox Code Playgroud)

mysql ef-code-first entity-framework-4.3

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

命名空间中的重载决策

我试图在命名空间内调用一个重载函数,并且有点挣扎.

工作示例1:没有命名空间

class C {};

inline void overloaded(int) {}

template<typename T> void try_it(T value) {
  overloaded(value);
}

inline void overloaded(C) {}


int main()
{
  try_it(1);
  C c;
  try_it(c);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

工作示例2:模板之前定义的所有重载

class C {};

namespace n {
  inline void overloaded(int) {}
  inline void overloaded(C) {}
}

template<typename T> void try_it(T value) {
  n::overloaded(value);
}

int main()
{
  try_it(1);
  C c;
  try_it(c);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

破坏的示例3:模板后的一些重载

class C {};

namespace n {
  inline void overloaded(int) {}
}

template<typename T> void …
Run Code Online (Sandbox Code Playgroud)

c++ overload-resolution

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

字符串文字重载

在初始化列表中使用时,是否可以重构一个只接受空字符串的构造函数?

struct null_ptr_type;

struct str
{
  str(null_ptr_type*) {}
  str(const char(&)[1]) {}
};

struct config
{
  str s;
};

int main()
{
  config c1 = {0}; // Works, implicit conversion to a null pointer
  config c2 = {str("")}; // Works
  config cx = {str("abc")}; // Fails (as desired)
  config c3 = {""}; // Fails with no conversion possible
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在c3不接受非空字符串的情况下制作工作语法?鉴于有效,我不明白为什么不这样c1做.我在这里缺少一些禁止这种情况的规则吗?

c++

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

使用LEFT JOIN和LIKE mysql

我在mysql查询中有问题.这是我的表格的样子:

mysql> select username, specialty from users;
+----------+------------------+
| username | specialty        |
+----------+------------------+
| JinkX    | php, html, mysql |
| test1    | html             |
+----------+------------------+


mysql> select name, tags from tasks;
+----------------+------+
| name           | tags |
+----------------+------+
| fix front page | html |
+----------------+------+
Run Code Online (Sandbox Code Playgroud)

当我尝试执行以下查询时,只有当专业完全等于标签时,它才有效.但我希望它能同时发挥作用

mysql> select tasks.name from users left join tasks on tasks.tags LIKE users.specialty where users.username = 'test1';
+----------------+
| name           |
+----------------+
| fix front page |
+----------------+

mysql> select tasks.name from …
Run Code Online (Sandbox Code Playgroud)

mysql

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

如果内部联接中有Else Statement

我有一个表作业,其StartDate列通常为null.如果它不是null,那么这就是我想要与表格四分之一的内部联接,否则我想在其他条件下进行内部联接.这就是我想要的东西:

INNER JOIN Quarters q
ON  (IF j.StartDate IS NOT NULL (j. StartDate BETWEEN GETDATE() and q.EndDate)
     ELSE **Some other condition**)
Run Code Online (Sandbox Code Playgroud)

运行此错误时出现的错误是关键字"IF"附近的语法不正确

有谁知道这个的正确语法?

在此先感谢您的帮助!

sql

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

从托管代码中包含时,未定义shared_ptr

我正在尝试围绕非托管C++静态库编写托管包装器(C++/CLI),并且遇到两个问题:

  1. 非托管库std::shared_ptr在其标头中使用.<memory>包含,标题编译为非托管项目的一部分.但是,当我在托管项目中包含此标头时,我收到此错误:

    错误C2039:'shared_ptr':不是'std'的成员

  2. 如何从C++/CLI 访问Values集合SortedDictionary<K, V>?我似乎无法找到正确语法的任何示例,并且C#样式语法无法编译.

代码#1:

// 1>Dummy.h(10): error C2039: 'shared_ptr' : is not a member of 'std'
#pragma once

#pragma managed(push, off)

#include <memory>

class Foo {};
typedef std::shared_ptr<Foo> FooPtr;

#pragma managed(pop)


using namespace System;

namespace Dummy {

    public ref class Class1
    {
    public:
        Class1(FooPtr);
    };
}
Run Code Online (Sandbox Code Playgroud)

c++-cli visual-studio-2010 shared-ptr

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

在 std::function 中包装委托?

我有一个本机的非托管 C++ 库,我想将它包装在托管 C++ 类中,以提供干净且类型安全的方式来从 C# 访问非托管类,而无需执行 PInvoke。

我试图包装的方法之一具有以下签名:

void Unmanaged::login(
  const std::wstring& email,
  const std::wstring& password,
  std::function<void()> on_success,
  std::function<void(int, const std::wstring&)> on_error);
Run Code Online (Sandbox Code Playgroud)

然而,试图解决这个问题并不容易。显而易见的方法:

public delegate void LoginSuccess();
public delegate void LoginFailed(int, String^);

void Wrapper::login(String ^ email, String ^ password, LoginSuccess ^ onSuccess, LoginFailed ^ onError)
{
    unmanaged->login(convert_to_unmanaged_string(email), convert_to_unmanaged_string(password), [onSuccess]() {onSuccess(); }, [](int code, const std::wstring& msg) {onError(code,convert_to_managed_string(msg))});
}
Run Code Online (Sandbox Code Playgroud)

失败,因为托管 C++ 不允许(本地)lambda(在成员中)。

我知道我可以使用 Marshal::GetFunctionPointerForDelegate 来获取指向委托的本机指针,但我仍然需要提供一个“中间件”来在托管/非托管类型(例如 std::wstring)之间进行转换。

也许有比完全使用托管 C++ 更好的方法?

.net c# c++ clr c++-cli

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

PROPERTYKEY::pid 含义

有人能解释一下结构中的pid字段PROPERTYKEY是什么吗?微软说只是不要使用0或者1你很好,但是当我需要IPropertyStore在我的代码中实现时这没有帮助。是否pid应该是键的一部分,因此可能存在多个具有相同fmtid但不同的值pid?或者它应该被忽略,所以GetValue应该返回任何匹配的值fmtid,忽略pid?

winapi windows-7 ipropertystorage

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