小编Fra*_*era的帖子

对象文件vs库文件,为什么?

我理解编译的基础知识.源文件编译为目标文件,然后链接器链接到可执行文件.这些目标文件由包含定义的源文件组成.

所以我的问题是:


  • 为什么我们有一个单独的库实现?.a .lib,.dll ...
  • 我可能错了,但在我看来,像.o文件本身与图书馆有点相同吗?
  • 有人不能给你他们的.o实现某个声明(.h)你可以替换它并将它链接成为执行相同功能的可执行文件,但使用不同的操作?

c++

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

C#Namespace Alias限定符(::) vs解除引用运算符(.)

快速而简单的问题.我有点理解命名空间别名限定符的作用,它用于访问命名空间中的成员,但解除引用操作符也是如此.我对这种情况的不同感到困惑,为什么你会使用一个而不是另一个,或者他们各自如何完成同样的事情.

using colAlias = System.Collections;

namespace myns
{
    class TestApp
    {
        static void Main()
        {
            colAlias.Hashtable test = new colAlias.Hashtable();
            colAlias::Hashtable test1 = new colAlias::Hashtable();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# namespaces global dereference

26
推荐指数
2
解决办法
2907
查看次数

如何将命令行参数传递给使用open命令运行的程序?

有没有办法将参数传递给正在运行的程序:

open -a /Applications/Utilities/Terminal.app ~/my_executable
Run Code Online (Sandbox Code Playgroud)

我试过了:

open -a /Applications/Utilities/Terminal.app ~/my_executable arg1 arg2
Run Code Online (Sandbox Code Playgroud)

但这被解释为告诉终端打开 ~/my_executable ~/arg1 ~/arg2.

我试过了:

open -a /Applications/Utilities/Terminal.app '~/my_executable arg1 arg2'
Run Code Online (Sandbox Code Playgroud)

但是它选择了arg1和arg2,好像它们是路径的一部分而不是参数.

我试过了:

open -a /Applications/Utilities/Terminal.app ~/my_executable | xargs arg1 arg2
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

open -a /Applications/Utilities/Terminal.app ~/my_executable --args arg1 arg2
Run Code Online (Sandbox Code Playgroud)

但是使用那个标志,args被传递到终端.

注意

我只允许将参数更改为Terminal.app([]中的部分):

open -a /Applications/Utilities/Terminal.app [~/my_executable arg1 arg2]
Run Code Online (Sandbox Code Playgroud)

macos bash

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

C#模拟HID点击器蓝牙

如果没有在PC上运行"服务器"应用程序,我需要一些关于如何或是否可以实现的指导.我已经建立了与PC的蓝牙连接,我想发送HID命令来控制类似于点击器工作方式的幻灯片.

c#

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

clang-format:如果语句溢出,则将参数和参数强制为one-line-each

有没有办法强制参数和参数为单行 - 如果一个或多个字符超过溢出?

例如:

例如,这个:

if(value != "course" || value != "module" || value != "lesson"
)
Run Code Online (Sandbox Code Playgroud)

应该是这样的:

if(value != "course" ||
   value != "module" ||
   value != "lesson")
Run Code Online (Sandbox Code Playgroud)

或这个:

if(value != "course"
|| value != "module"
|| value != "lesson")
Run Code Online (Sandbox Code Playgroud)

还有这个:

void some_class::some_func(const std:string s, const std::string t
)
Run Code Online (Sandbox Code Playgroud)

应该是这样的:

void some_class::some_func(const std:string s,
                           const std::string t)
Run Code Online (Sandbox Code Playgroud)

或这个:

void some_class::some_func(const std:string s
                           , const std::string t)
Run Code Online (Sandbox Code Playgroud)

编辑:

我的.clang格式:

#http://clang.llvm.org/docs/ClangFormatStyleOptions.html

# The style used for all options not specifically …
Run Code Online (Sandbox Code Playgroud)

clang-format

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

SQlBulkCopy数据源中DateTime类型的给定值无法转换为指定目标列的int类型

我在尝试执行以下"Cities"DataTable的SqlBulkInsert时收到上述错误代码:

DataTable cityTable = new DataTable(City.TABLE_NAME);
cityTable.Columns.Add("id", typeof(int));
cityTable.Columns.Add("name", typeof(string));
cityTable.Columns.Add("ascii_name", typeof(string));
cityTable.Columns.Add("alternate_names", typeof(string));
cityTable.Columns.Add("latitude", typeof(double));
cityTable.Columns.Add("longitude", typeof(double));
cityTable.Columns.Add("feature_class", typeof(char));
cityTable.Columns.Add("feature_code", typeof(string));
cityTable.Columns.Add("country_code", typeof(string));
cityTable.Columns.Add("country_code2", typeof(string));
cityTable.Columns.Add("population", typeof(long));
cityTable.Columns.Add("elevation", typeof(int));
cityTable.Columns.Add("modification_date", typeof(DateTime));
cityTable.Columns.Add("admin1code", typeof(string));
cityTable.Columns.Add("admin2code", typeof(string));
cityTable.Columns.Add("admin3code", typeof(string));
cityTable.Columns.Add("admin4code", typeof(string));
cityTable.Columns.Add("gtopo30", typeof(int));
cityTable.Columns.Add("timezone_name", typeof(string));
cityTable.Columns.Add("version", typeof(Binary));
Run Code Online (Sandbox Code Playgroud)

以下是将每个实体添加到DataTable的代码:

object id = EvaluateNullity(parsedCity.Id);
object name = EvaluateNullity(parsedCity.Name);
object asciiName = EvaluateNullity(parsedCity.AsciiName);
object alternateNames = EvaluateNullity(parsedCity.AlternateNames);
object latitude = EvaluateNullity(parsedCity.Latitude);
object longitude = EvaluateNullity(parsedCity.Longitude);
object featureClass = EvaluateNullity(parsedCity.FeatureClass);
object featureCode = EvaluateNullity(parsedCity.FeatureCode);
object …
Run Code Online (Sandbox Code Playgroud)

c# sql performance parsing

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

LINQ vs foreach vs性能测试结果

有人可以解释这些结果吗?我知道有重复的问题,但我还没有找到一个与我的结果得出相同结论的问题:o

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SpeedTest
{
    class Person
    {    
        public Person(string name)
        {
            this.Name = name;
        }

        public string Name { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var people = new List<Person>();
            AddTwins("FRANCISCO", people);
            var stopwatch = new Stopwatch();

            string name = "OCSICNARF";

            long linqTime = 0L;
            long foreachTime = 0L;
            long forTime = 0L;

            stopwatch.Start();
            Person person0;
            var result = from person in …
Run Code Online (Sandbox Code Playgroud)

c# linq performance foreach for-loop

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

什么是C++中的memcpy等价物

将memcpy用于缓冲区或C++中的字符串相当于什么?

例如:

char message_buffer[32];
uint16_t n = 457u;
memcpy(message_buffer, &n, sizeof(n));
...
Run Code Online (Sandbox Code Playgroud)

就像是:

std::string message_buffer;
uint16_t n = 457u;
std::copy(messagebuffer, n);
Run Code Online (Sandbox Code Playgroud)

没有C++等价物吗?我只是坚持使用memcpy,而是使用std :: string?

std::string message_buffer;
message_buffer.resize(32);
uint16_t n = 457u;
memcpy(&message_buffer[0], &n, sizeof(n));
Run Code Online (Sandbox Code Playgroud)

我想我应该提供更多关于我想要做的事情的背景 - 只是我使用套接字发送和接收数据.数据需要预先附加该数字的16位二进制表示(457).所以我给出的例子只是第一步,之后我复制了我想发送到缓冲区的信息,知道前2个字节(16位)包含"幻数"二进制.

c++

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

如何将非静态成员函数作为unique_ptr删除器传递

#include <memory>
#include <iostream>
#include <exception>
#include <curl/curl.h>

class client
{
private:
    std::unique_ptr<CURL, decltype(&psclient::del_curl)> uptr_curl_;

    inline CURL * init_curl()
    {
        CURLcode result = curl_global_init(CURL_GLOBAL_DEFAULT);
        if(result != CURLE_OK)
            throw std::logic_error(curl_easy_strerror(result));
        return curl_easy_init();
    }

    inline void del_curl(CURL * ptr_curl)
    {
        curl_easy_cleanup(ptr_curl);
        curl_global_cleanup();
    }
public:
    inline client()
    : uptr_curl_(init_curl(), &client::del_curl)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

编译器一直在抱怨 No matching constructor for initialization of 'std::unique_ptr<CURL, void (*)(CURL *)>'

在我看来,声明对于删除模板参数是正确的.它是一个返回void的函数指针,并将CURL*作为参数.这符合签名del_curl.

还有另一个随机规则,我不知道,在C++中指定了对非静态成员函数指针的模板参数的要求吗?如果是这样,为什么?

c++ unique-ptr

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

lambda 到 curl 回调函数

我正在尝试将 lambda 传递给CURLOPT_WRITEFUNCTION.

该函数需要一个静态函数,但是,我从这个问题中了解到lambda 将被隐式转换,并且我可以从 lambda 调用成员函数。

auto callback = [](char * ptr_data, size_t size, size_t nmemb, string * writerData)
->size_t
{
    if(writerData == NULL)
        return 0;
    size_t data_size = size * nmemb;
    writerData->append(ptr_data, data_size);
    return (int)data_size;
};

CURLcode code = curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, callback);
Run Code Online (Sandbox Code Playgroud)

这实际上编译,但卷曲段错误: Segmentation fault: 11

我在这里粘贴了完整的示例。

c++ c++11

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