小编use*_*285的帖子

'is_trivially_copyable'不是'std'的成员

我的gcc版本是4.8.3 20140624.我可以使用is_pod,is_trivial,is_standard_layout,但尝试失败时is_trivially_copyable,is_constructibleis_default_constructible,也许更多.错误消息是'xxx' is not a member of 'std'.

这有什么问题?它们甚至得到当前海湾合作委员会的支持吗?谢谢!

c++ type-traits c++11

16
推荐指数
4
解决办法
8280
查看次数

是否需要明确的对齐?

在一些读数之后,我理解编译器已经对结构或类进行了填充,以便可以在其自然对齐的边界上访问每个成员.那么在什么情况下编码人员需要明确调整以获得更好的性能?我的问题来自于此:

英特尔64和IA-32 Architechtures参考手册:

For best performance, align data as follows:
Align 8-bit data at any address.
Align 16-bit data to be contained within an aligned 4-byte word.
Align 32-bit data so that its base address is a multiple of four.
Align 64-bit data so that its base address is a multiple of eight.
Align 80-bit data so that its base address is a multiple of sixteen.
Align 128-bit data so that its base address is a multiple of sixteen.
Run Code Online (Sandbox Code Playgroud)

所以假设我有一个结构: …

c++ memory alignment padding

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

使用nullptr计算指针偏移是否安全?

假设我有两个指针:

char* p1 = nullptr;
char* p2 = std::malloc( 4 );
std::size_t offset = p2 - p1;
Run Code Online (Sandbox Code Playgroud)

以这种方式获得抵消是否安全?到目前为止它在我的电脑上工作正常.但我想知道偏移是否可以超过size_t的最大数量,以致此方法失败?

c++ memory nullptr c++11

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

如何一次编译多个独立的CPP文件?

我不是在询问makefile.我有多个.cpp文件用于测试目的.所以在终端,我需要写:

g++ test1 -o run1
g++ test2 -o run2
...
Run Code Online (Sandbox Code Playgroud)

如果.cpp文件被更改,那么我将不得不再次运行上述命令.这种情况有解决方案吗?谢谢!

我以为makefile无法实现这个目标.这就是我这样问的原因.我将完整地保留上述问题.下面是我的makefile,我应该如何为多个文件更改它?

GCC=g++
GFLAGS=-Wall -g -std=c++11 -O3 
SRC=./test1.cpp    
OUT= test1.out    

g:
    $(GCC) $(GFLAGS) $(SRC) -o $(OUT)

clean:
    rm -rf $(OUT) ./*~ ./*.o
Run Code Online (Sandbox Code Playgroud)

c++ gcc

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

标签 统计

c++ ×4

c++11 ×2

memory ×2

alignment ×1

gcc ×1

nullptr ×1

padding ×1

type-traits ×1