在蓝桥云课ROS中,使用:
git clone https://github.com/changkun/modern-cpp-tutorial.git
案例作者使用系统如下:
云实践平台使用-std=c++17,
书中第一章案例:
需要做一些修改的。否则报错如下:
C = gcc
CXX = clang++
SOURCE_C = foo.c
OBJECTS_C = foo.o
SOURCE_CXX = 1.1.c.and.cpp
TARGET = 1.1.out
LDFLAGS_COMMON = -std=c++2a
all:
$(C) -c $(SOURCE_C)
$(CXX) $(SOURCE_CXX) $(OBJECTS_C) $(LDFLAGS_COMMON) -o $(TARGET)
clean:
rm -rf *.o $(TARGET)
clang++修改为g++,c++2a修改为c++17。
C = gcc
CXX = g++
SOURCE_C = foo.c
OBJECTS_C = foo.o
SOURCE_CXX = 1.1.c.and.cpp
TARGET = 1.1.out
LDFLAGS_COMMON = -std=c++17
all:
$(C) -c $(SOURCE_C)
$(CXX) $(SOURCE_CXX) $(OBJECTS_C) $(LDFLAGS_COMMON) -o $(TARGET)
clean:
rm -rf *.o $(TARGET)
再试一次看看?
书中所有案例均可在蓝桥ROS机器人中进行实践练习。
当然这也是一段混合使用C/C++案例。
foo.h
#ifdef __cplusplus
extern "C" {
#endif
int add(int x, int y);
#ifdef __cplusplus
}
#endif
foo.c
#include "foo.h"
// C code
int add(int x, int y) {
return x+y;
}
x,y求和。
1.1.cpp
#include "foo.h"
#include <iostream>
#include <functional>
int main() {
// use lambda expression
[out = std::ref(std::cout << "Result from C code: " << add(1, 2))](){
out.get() << ".\n";
}();
return 0;
}
直接调用add。
如果需要输入数值x和y,并求和。
int main() {
// use lambda expression
int x=0,y=0;
std::cin>>x;
std::cin>>y;
[out = std::ref(std::cout << "Result from C code: " << add(x, y))](){
out.get() << ".\n";
}();
return 0;
}