小编sjs*_*sam的帖子

使用带有数组和指针的sizeof的实验

对于该计划:

#include<stdio.h>
int main(void)
{

    int (*a)[2];
    int b[5];

    printf("sizeof(int) : %zu\n", sizeof(int)); 
    printf("sizeof(int*) : %zu\n", sizeof(int*));

    printf("sizeof(b) : %zu\n",sizeof(b));
    printf("sizeof((int*)b) : %zu\n",sizeof((int*)b));
    printf("sizeof(&b[0]) : %zu\n",sizeof(&b[0]));

    printf("sizeof(a) : %zu\n",sizeof(a));
    printf("sizeof(a[0]) : %zu\n",sizeof(a[0]));
    printf("sizeof(a[1]) : %zu\n",sizeof(a[1]));

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

输出是:

sizeof(int) : 4 -> Fact 1
sizeof(int*) : 8 -> Fact 2
sizeof(b) : 20 -> Case 1
sizeof((int*)b) : 8 -> Case 2
sizeof(&b[0]) : 8 -> Case 3
sizeof(a) : 8 -> Case 4
sizeof(a[0]) : 8 -> Case …
Run Code Online (Sandbox Code Playgroud)

c arrays pointers sizeof

21
推荐指数
2
解决办法
653
查看次数

双引号,单引号和无引号的假设

在bash中:

使用双引号

echo "*" #Globbing is never done
echo "$variable" # Variable expansion is always done
echo "$(command)" # command expansion is always done
Run Code Online (Sandbox Code Playgroud)

使用单引号

echo '*' #Globbing is never done 
echo '$variable' # Variable expansion is never done
echo '$(command)' # command expansion is never done
Run Code Online (Sandbox Code Playgroud)

不使用引号

echo * #Globbing always done.
echo $variable; # Variable expansion is always done
echo $(command) # command expansion is always done
Run Code Online (Sandbox Code Playgroud)

这适用于所有命令吗?

bash

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

外部符号是如何解决的?

我有两个文件37064544_p1.cpp,37064544_p2.cpp内容相同,如下所示:

int add(int x,int y)
{
return x+y;
}
Run Code Online (Sandbox Code Playgroud)

我用它们编译了它们

g++ -c 37064544_p2.cpp -o 37064544_p2.o
g++ -c 37064544_p2.cpp -o 37064544_p2.o
Run Code Online (Sandbox Code Playgroud)

并使用将它们添加到存档中

ar -rsc lib37064544pf.a 37064544_p1.o 37064544_p2.o
Run Code Online (Sandbox Code Playgroud)

$ nm -s lib37064544pf.a 
Run Code Online (Sandbox Code Playgroud)

给我 :

Archive index:
_Z3addii in 37064544_p1.o
_Z3addii in 37064544_p2.o

37064544_p1.o:
0000000000000000 T _Z3addii

37064544_p2.o:
0000000000000000 T _Z3addii
Run Code Online (Sandbox Code Playgroud)

$ ar -t lib37064544pf.a 
Run Code Online (Sandbox Code Playgroud)

给我

37064544_p1.o
37064544_p2.o
Run Code Online (Sandbox Code Playgroud)

我有一个驱动程序,它调用_Z3addii编译的函数

g++ -static 37064544driver.cpp -o 37064544driver.elf -L. -l37064544pf
Run Code Online (Sandbox Code Playgroud)

结果是

Sum : 11
Run Code Online (Sandbox Code Playgroud)

问题

  1. 符号是如何_Z3addii解决的?

    • 是根据档案索引吗? …

c++ g++ unix-ar static-linking nm

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

在C++ 11中,没有返回类型的main的使用是否逐步淘汰?

Stephen Prata在他的着作C++ Primer Plus [p 31]中说:

许多现有程序使用经典的C函数头代码:

main() // original C style

在经典C下,省略返回类型与声明函数类型为int相同.但是,C++已逐步淘汰了这种用法.

但是C++ 11草案3.6.1-> 2说

实现不应预定义主函数.此功能不应过载.它应该具有int类型的返回类型,否则其类型是实现定义的.

测试结果

$ g++ -Werror=pedantic MainCheck.cpp -o MainCheck
MainCheck.cpp:3:6: error: ISO C++ forbids declaration of ‘main’ with no type [-Werror=pedantic]
 main()
$ # also means g++ don't conform to the standard
Run Code Online (Sandbox Code Playgroud)

确认普拉塔先生在C++标准方面所说的是正确的.

C++ 11草案中是否有一个条款不鼓励使用:

main() // that is without return type.
Run Code Online (Sandbox Code Playgroud)

它的返回类型应为int类型

本身这样一个条款?

c++ c++11

10
推荐指数
2
解决办法
1621
查看次数

Bash双方括号正则表达式匹配问题

请考虑以下代码:

$ var1=bingo
$ var2=.ingo
$ if [[ "$var1" =~ $var2 ]]; then echo found; fi
found
$ if [[ $var1 =~ "$var2" ]]; then echo found; fi    # line 5
$ if [[ "$var1" =~ "$var2" ]]; then echo found; fi  # line 6
$ if [[ $var1 =~ $var2 ]]; then echo found; fi
found
Run Code Online (Sandbox Code Playgroud)

以上就是我在bash shell中所做的.

问题是为什么没有线56打印found

我想我已经知道了答案,但我正在寻找一个简单易懂的答案.

总而言之,当在右侧使用变量(内部双引号)时=~,双引号是否仅用于变量扩展?

bash

7
推荐指数
1
解决办法
969
查看次数

FirebaseDynamicLinks getInitialLink() 多次触发

getInitialLink() 在第一次检索后继续提供有效的动态链接。这会导致用户不断被迫进入与深层链接关联的页面的循环。

\n
Running `flutter doctor --verbose` produced the below results.\n\n[\xe2\x9c\x93] Flutter (Channel stable, 1.20.4, on Mac OS X 10.15.6 19G2021, locale en-US)\n    \xe2\x80\xa2 Flutter version 1.20.4 at /Users/sjsam/Documents/Developement/flutter\n    \xe2\x80\xa2 Framework revision fba99f6cf9 (5 days ago), 2020-09-14 15:32:52 -0700\n    \xe2\x80\xa2 Engine revision d1bc06f032\n    \xe2\x80\xa2 Dart version 2.9.2\n\n \n[\xe2\x9c\x93] Android toolchain - develop for Android devices (Android SDK version 28.0.3)\n    \xe2\x80\xa2 Android SDK at /Users/sjsam/Library/Android/sdk\n    \xe2\x80\xa2 Platform android-29, build-tools 28.0.3\n    \xe2\x80\xa2 Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java\n    \xe2\x80\xa2 Java version OpenJDK Runtime …
Run Code Online (Sandbox Code Playgroud)

flutter firebase-dynamic-links

7
推荐指数
1
解决办法
2027
查看次数

是否存在整数在转换为double时失去其精度的情况?

假设我有

int i=25;
double j=(double)i;
Run Code Online (Sandbox Code Playgroud)

是否有机会j拥有价值观24.9999999..upto_allowed25.00000000..._upto_allowed_minus_one_and_then_1.我记得在某处读过这些东西但却无法正常回忆.

换一种说法:

是否存在整数在转换为double时失去其精度的情况?

c casting

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

如何抑制top命令的一般信息

我希望使用a来压缩top命令的一般信息top parameter.

一般信息我的意思是以下内容:

top - 09:35:05 up  3:26,  2 users,  load average: 0.29, 0.22, 0.21
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.3%us,  0.7%sy,  0.0%ni, 96.3%id,  0.8%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   3840932k total,  2687880k used,  1153052k free,    88380k buffers
Swap:  3998716k total,        0k used,  3998716k free,   987076k cached
Run Code Online (Sandbox Code Playgroud)

不想做的是:

top -u user | grep process_name
Run Code Online (Sandbox Code Playgroud)

要么

top -bp $(pgrep process_name) | do_something
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

注意:我在Ubuntu 12.04上,顶级版本是3.2.8.

bash top-command

6
推荐指数
3
解决办法
3754
查看次数

Unix / Perl / Python:大数据集的替代列表

I've got a mapping file of about 13491 key/value pairs which I need to use to replace the key with the value in a data set of about 500000 lines divided over 25 different files.

Example mapping: value1,value2

Example input: field1,field2,**value1**,field4

Example output: field1,field2,**value2**,field4

Please note that the value could be in different places on the line with more than 1 occurrence.

My current approach is with AWK:

awk -F, 'NR==FNR { a[$1]=$2 ; next } { for (i in …

python perl awk sed large-data

6
推荐指数
2
解决办法
195
查看次数

自动连接信号与 GtkBuilder 但在 GTKmm 上

C中,我可以使用以下代码自动连接信号:

gtk_builder_connect_signals (builder, NULL)
Run Code Online (Sandbox Code Playgroud)

如何使用GTKmm在C++中执行此操作?

c c++ gtk gtkmm

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