我写了一个非常简单的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) 我想在使用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) 我的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)
但是我该如何解决这个问题呢?
谢谢!
在这个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) 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) 我写了一个非常简单的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)