$ cat > test.cpp <<EOF
class type_class {
int field1;
int field2;
public:
constexpr type_class (int f1, int f2): field1(f1), field2(f2) {
}
};
extern const type_class var;
const type_class var(12, 34);
EOF
$ g++ -S -O2 test.cpp
$ cat test.s
.file "test.cpp"
.globl var
.section .rodata
.align 8
.type var, @object
.size var, 8
var:
.long 12
.long 34
.ident "GCC: (Debian 6.3.0-18+deb9u1) 6.3.0 20170516"
.section .note.GNU-stack,"",@progbitsпри x = x + 1 будет x равняться "2"
если я объявляю переменную через int x; и потом ничего в неё не кладу, то там хранится ноль на Си?
int x; вне всех функций, то в С и С++ там изначально хранится 0. Если вы делаете то же самое внутри функции, то начальное значение не определено. Технически там будет либо мусор находящийся в стеке или в регистре процессора ассоциированном с данной переменной, либо какое-нибудь отладочное значение записанное туда компилятором специально для отлова обращений к неинициализированным переменным. obj->ShowID(); // Думал напишу obj[Тут номер обьэкта] и будет работать но нет...
obj[N].ShowID();a[b] эквивалентна записи *(a + b).Test *obj2= obj + sizeof (Test); objN= obj + (sizeof (Test) * N) ;
obj2 = obj + 1; objN = obj + N; std::locale::empty()
Компилятор выдает ошибку "empty is not a member of std::locale"
wif.imbue(std::locale(std::locale(), new std::codecvt_utf8<wchar_t,0x10ffff, std::consume_header>));static std::locale empty;
wif.imbue(std::locale(empty, new std::codecvt_utf8<wchar_t,0x10ffff, std::consume_header>)); retValue = NtCreateFile(FileHandle, DesiredAccess, ObjectAttributes, IoStatusBlock, AllocationSize, FileAttributes, ShareAccess, CreateDisposition, CreateOptions, EaBuffer, EaLength); // get return value of original function
Проект создаёт статическую библиотеку mylib, но в неё не включена требуемая реализация boost, то есть при линковке приложения с mylib нужно явно указывать, что нужно линковать boost.
pkg-config --libs <имя библиотеки>и получает список ключей для линковки. $ cat > dump-fp.c <<EOF
#include <inttypes.h>
#include <string.h>
#include <stdio.h>
void dump_float(float v)
{
uint32_t i;
memcpy(&i, &v, sizeof(i));
printf("0x%08"PRIx32"\n", i);
}
void dump_double(double v)
{
uint64_t i;
memcpy(&i, &v, sizeof(i));
printf("0x%016"PRIx64"\n", i);
}
int main(void)
{
dump_float(1.0f);
dump_double(1.0l);
return 0;
}
EOF
$ gcc dump-fp.c -o dump-fp
$ ./dump-fp
0x3f800000
0x3ff0000000000000 #!/bin/bash cd build exec cmake ../ exec make exit 0
#!/bin/bash
cd build
cmake ../
make
exit 0:help registers:8. Selection and drop registers "*, "+ and "~
Use these registers for storing and retrieving the selected text for the GUI.
See quotestar and quoteplus. When the clipboard is not available or not
working, the unnamed register is used instead. For Unix systems the clipboard
is only available when the +xterm_clipboard feature is present. {not in Vi}
$ vim --version | grep -o .xterm_clipboard
-xterm_clipboard$ vim --version | grep -o .xterm_clipboard
+xterm_clipboard Как исправить ошибку «stdio.h: No such file or directory »?
#include "..." search starts here:
#include <...> search starts here:Когда байт по адресу RCX равен нулю и программа достигает строки `je ..@15.endwhile`, инструкция JE просто не перескакивает на метку `..@15.endwhile`.
Почему?
cmp [rcx], dword 0 -- это вообще странная запись. Канонично было бы написать cmp dword ptr [rcx], 0. Но в любом случае, вы не "байт по адресу RCX" сравниваете с 0, а целое слово. Ну и между строчками ok и err нет целого слова нулей, но вот после err, очевидно, есть.cmp byte ptr [rcx], 0