小编sim*_*onc的帖子

什么可能导致getaddrinfo()返回错误代码"1"?

或多或少在标题中所说的内容.我这样打电话给getaddrinfo:

struct addrinfo crossplat, *actual_addr;
crossplat.ai_family = AF_UNSPEC; //IPv4 or IPv6.
crossplat.ai_socktype = SOCK_STREAM; 

if(int i = getaddrinfo("localhost", "8000", &crossplat, &actual_addr)!=0){
    cerr << "error code " << i << " received. Meaning: "<<  gai_strerror(i) << endl;
    return -1;
}
Run Code Online (Sandbox Code Playgroud)

自豪地印刷:

error code 1 received. Meaning: Unknown error
Run Code Online (Sandbox Code Playgroud)

在我的系统上.

我系统上的getaddrinfo手册页:

RETURN VALUE
   getaddrinfo() returns 0 if it succeeds, or one of the following 
   nonzero error codes:

   EAI_ADDRFAMILY....


   ...The gai_strerror() function translates these error codes to a 
       human readable string, suitable for …
Run Code Online (Sandbox Code Playgroud)

c network-programming berkeley-sockets

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

严格的别名规则,误报还是漏报?

我在 C 中遇到严格别名问题。我使用的是 GCC 4.7.1。

示例 1:
当使用 -fstrict-aliasing -Wstrict-aliasing=3 编译此代码时,我收到“警告:取消引用类型双关指针将破坏严格别名规则”

#include <stdio.h>
#include <stdint.h>

int main(void)
{
    uint8_t a[4] = {0x01, 0x23, 0x45, 0x67};
    uint32_t b;

    b = *(uint32_t *)a;

    printf("%x\n", b);

    return(0);
}
Run Code Online (Sandbox Code Playgroud)


示例 2:
此代码使用 -fstrict-aliasing 和 -Wstrict-aliasing=3 或 -Wstrict-aliasing=2 或 -Wstrict-aliasing=1 时不发出警告

#include <stdio.h>
#include <stdint.h>

int main(void)
{
    uint8_t a[4] = {0x01, 0x23, 0x45, 0x67};
    uint32_t b;
    void *p;

    p = a;
    b = *(uint32_t *)p;

    printf("%x\n", b);

    return(0);
}
Run Code Online (Sandbox Code Playgroud)


两个例子都工作正常。

使用 union 也是未定义的行为,并且在我的情况下使用 memcpy() …

c strict-aliasing gcc-warning

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

在Visual Studio中逐步处理托管代码和非托管代码

有三个项目:

在项目A打开的Visual Studio 2012中,我无法通过项目B进入项目C.

项目B和C是免费和开源的,我已经成功构建它们.

项目A引用项目B的DLL,如果找不到项目C的DLL文件,项目A将不会运行 - 所以我已经在项目中复制并粘贴了项目C的DLL,并将"始终复制"设置为输出目录.

在调试期间进入时,我只能获得项目B的源代码.我甚至没有看到模块窗口中加载的项目C,我完全不明白.如果没有包含项目C的DLL,该项目将无法运行,当它包含在内时,它将不会加载,但所有调用都在工作,因此必须在某处加载.

我试图将项目C的PDB文件包含到项目A的输出目录中,但没有运气,从项目B到项目C的函数调用仍然可以进入并且永远不会进入.

注意:

  • 只是我的代码被禁用
  • 项目B以两种方式包含在项目B中 - 一个"lib"文件(在链接器设置中)和源代码中的".h"文件被引用...我不知道这是否是问题但是你可能会.

我知道必须有一种方法可以实现这一点,我有所有可用的源代码,但我不是C或C++代码的专家,也不是它的调试.我已经尝试将bin目录中的所有各种项目C文件包含到项目A中,但无法使其正常工作.

感谢您的帮助或建议!

c c++ debugging clr fann

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

C中的优先顺序

#include<stdio.h>
int main()
{
   int i=-3, j=2, k=0, m;
   m = ++i || ++j && ++k;
   printf("%d, %d, %d, %d\n", i, j, k, m);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么输出给出结果-2 2 0 1?

一个逻辑是(++ j && ++ k)不计算为++ i非零

但因为&&的优先级高于|| 为什么他们没有计算

c

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

c ++堆内存分配/释放

如果我在堆上声明一些东西,char *a=new char[1000]并且主程序停止在没有delete[]调用时分配的内存会发生什么?它仍然在堆上或自动解除分配?

c++

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

指向常数的指针

#include <iostream>
using namespace std;

int main(void)
{
   const int a1 = 40;
   const int* b1 = &a1;
   int * c1 = (int *)(b1);
   *c1 = 'A';
cout<<*c1<<endl;
cout<<a1<<endl;
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

O/P:

65
40
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释输出吗?

c++ pointers const

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

无法比较字符

我有两个问题:

第一个问题是我不能for (apr = 0; apr < aprno; apr++)逐个添加字符.例如,如果我有aprno = 4,则在输入A之后它会要求第4个apr.但是当我输入AAAA时它会起作用...,它也仅适用于整数

第二个问题是char和int comparsion.我知道我无法比较它们,但我没有找到解决方案如何在任何地方进行.

addnoaprons:
    system("cls");
    printf("Add number of available aprons: ");
    scanf("%d", &aprno);
    goto addtypeaprons;

addtypeaprons:
    if (aprno < 1) goto addnoaprons;
    else {
        system("cls");  
        printf("Add types for %d aprons total:", aprno);
        for (apr = 0; apr < aprno; apr++)
            {   
                system ("cls");
                printf("Aprons total: %d", aprno);
                printf("\n\nNo. %d apron type: ", apr + 1);
                scanf("%c", &pismapr[apr]);
                if (pismapr == 'A') poleapr[apr] = 1;
                if (pismapr == 'B') …
Run Code Online (Sandbox Code Playgroud)

c

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

C错误解除指向不完整类型的指针

我制作了这段代码,遵循"C语言中的数据结构基础"一书中给出的函数,我制作了以下代码来实现一个简单的链表,但我似乎没有得到我错在哪里,因为书代码应该是正确的:

#include<stdio.h>
#include<stdlib.h>

typedef struct node *listpointer;

typedef struct        {

int data;
listpointer link;
}  node;

void print(listpointer first)
 {
while  (first)      {
           printf("%d\n",first->data);
           first=first->link;
}
 }

void addAtFront(listpointer *first,int n)
{
listpointer t=*first,temp;
temp=malloc(sizeof(node));
int i=1;
while (i <= n)  {
                t=t->link;
                i++;
}
if(*first)  {
       temp->link=t->link;
        temp->data=90; 
       t->link=temp;
}
else 
{
      *first=temp;
        temp->link=NULL;
}
}       


listpointer createList( )
{
listpointer first,second;
if(first=malloc(sizeof(node)))  {
           first->data=67;
           if(second=malloc(sizeof(node)))  {
         second->data=65;
         first->link=second;
         second->link=NULL;
           }
}
return first;
  }





    main( )
   {
listpointer …
Run Code Online (Sandbox Code Playgroud)

c linked-list

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

删除 C# TextBlock 内联元素填充

关于TextBlockC#中的UIElement,我们可以向Run其中添加多个对象,这些对象将附加到inlines属性中。这是我们在一个 .txt 文件中显示不同格式(字体、大小等)的多段文本的一种方式TextBlock

我的问题是:当我将两个Run对象添加到一个对象中时TextBlock,每个对象之间存在填充Run。例如,我添加“12”和“34”Run对象,最后它们将在视图中显示为“12 34”。但我需要的是它们应该作为一个单词连接在一起 - “1234” - 没有那种填充

我们可以使用任何设置来防止这种填充吗?

c# wpf textblock padding

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

我可以声明一个数组并仅为其第一个元素分配初始值吗?

我有以下代码:

typedef struct
{
   int a;
   float b;
   int c;
} Hello;

Hello hello[100];
Run Code Online (Sandbox Code Playgroud)

我知道我可以为这个数组的第一个元素赋值:

hello[0] = {1,2.0,3};
Run Code Online (Sandbox Code Playgroud)

但是当我们声明时,如何分配第一个元素 hello: Hello hello[100];

c arrays initialization

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