小编Dan*_*Dan的帖子

如何printf uint64_t?失败:"格式中的虚假尾随'%'

我写了一个非常简单的printf uint64_t测试代码:

#include <inttypes.h>
#include <stdio.h>

int main()
{
  uint64_t ui64 = 90;
  printf("test uint64_t : %" PRIu64 "\n", ui64);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我使用ubuntu 11.10(64位)和gcc版本4.6.1进行编译,但失败了:

main.cpp: In function ‘int main()’:
main.cpp:9:30: error: expected ‘)’ before ‘PRIu64’
main.cpp:9:47: warning: spurious trailing ‘%’ in format [-Wformat]
Run Code Online (Sandbox Code Playgroud)

c c++

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

如何在Makefile中打印消息?

我想在使用a进行构建过程时打印一些消息makefile.下面的一个可以打印消息,但它不会在它之后执行脚本.我该如何解决这个问题?

ifeq (yes, ${TEST})
        CXXFLAGS := ${CXXFLAGS} -DDESKTOP_TEST
test:
        @echo '************  TEST VERSION ************'
else
release:
        @echo "************ RELEASE VERSIOIN **********"
endif
Run Code Online (Sandbox Code Playgroud)

makefile

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

ssh-add:密钥长度无效

我的mac自动升级后,我尝试ssh-add失败:

>ssh-add
Enter passphrase for /Users/dan/.ssh/id_rsa:
Error loading key "/Users/dan/.ssh/id_rsa": Invalid key length

>ssh -V
OpenSSH_7.6p1, LibreSSL 2.6.2
Run Code Online (Sandbox Code Playgroud)

但是我该如何解决这个问题呢?

谢谢!

ssh

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

如何编写混合C和C++的makefile

在这个Makefile中,我不知道如何在混合C和C++的同一个Makefile中编译c对象.如果我先编译C对象然后运行这个Makefile,它就可以了.任何人都可以帮我修复它吗?提前致谢!

CXX = g++
CXXFLAGS = -Wall -D__STDC_LIMIT_MACROS


SERVER_SRC = \
    main.cpp

SERVER_SRC_OBJS = ${SERVER_SRC:.cpp=.o}


REDIS_SRC = \
    $(HIREDIS_FOLDER)/net.c \
    $(HIREDIS_FOLDER)/hiredis.c \
    $(HIREDIS_FOLDER)/sds.c \
    $(HIREDIS_FOLDER)/async.c

REDIS_SRC_OBJS = ${REDIS_SRC:.c=.o}


.SUFFIXES:
.SUFFIXES: .o .cpp
.cpp.o:
    $(CXX) $(CXXFLAGS) -I$(HIREDIS_FOLDER) \
    -c $< -o $*.o


all: server

net.o: net.c fmacros.h net.h hiredis.h
async.o: async.c async.h hiredis.h sds.h dict.c dict.h
hiredis.o: hiredis.c fmacros.h hiredis.h net.h sds.h
sds.o: sds.c sds.h


server: $(SERVER_SRC_OBJS) $(REDIS_SRC_OBJS)
    mkdir -p bin
    $(CXX) $(CXXFLAGS) -o bin/redis_main \
    -I$(HIREDIS_FOLDER) \
    $(REDIS_SRC_OBJS) \
    $(SERVER_SRC_OBJS) …
Run Code Online (Sandbox Code Playgroud)

c c++ makefile

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

tcpdump 中的“ecr”选项是什么意思?

19:25:47.629351 IP 2.2.2.2.80 > 1.1.1.1.31889: Flags [.], seq 2372487272:2372492544, ack 2808407165, win 122, options [nop,nop,TS val 911640439 ecr 235835291], length 5272
19:25:47.631626 IP 1.1.1.1.31889 > 2.2.2.2.80: Flags [.], ack 2372480682, win 3876, options [nop,nop,TS val 235835291 ecr 911640428], length 0
19:25:47.631638 IP 1.1.1.1.31889 > 2.2.2.2.80: Flags [.], ack 2372483318, win 3793, options [nop,nop,TS val 235835291 ecr 911640428], length 0
19:25:47.631677 IP 1.1.1.1.31889 > 2.2.2.2.80: Flags [.], ack 2372483318, win 4096, options [nop,nop,TS val 235835292 ecr 911640428], length 0
19:25:47.674712 IP …
Run Code Online (Sandbox Code Playgroud)

networking tcp packet-capture tcpdump

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

C语言全局数组位于其反汇编代码中的哪个位置

我写了一个非常简单的C代码如下:

int data_items[] = {3,67,32,4,89,6,34,2,9,0};

int max(int* pt)
{
  int val = *pt;
  while(*pt != 0)
  {
    if (*pt > val)
    {
      val = *pt;
    }
    ++pt;
  }
  return val;
}

int main()
{

  max(data_items);

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

然后我用gcc编译它:

gcc main.c

然后将其拆解为:

objdump -d a.out

最后我得到了汇编代码:

a.out:     file format elf64-x86-64


Disassembly of section .init:

00000000004003a8 <_init>:
  4003a8:   48 83 ec 08             sub    $0x8,%rsp
  4003ac:   48 8b 05 45 0c 20 00    mov    0x200c45(%rip),%rax        # 600ff8 <_DYNAMIC+0x1d0>
  4003b3:   48 85 c0 …
Run Code Online (Sandbox Code Playgroud)

c assembly

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

标签 统计

c ×3

c++ ×2

makefile ×2

assembly ×1

networking ×1

packet-capture ×1

ssh ×1

tcp ×1

tcpdump ×1