【发布时间】:2020-09-22 17:57:12
【问题描述】:
我编写了以下 C 程序:
#include <stdio.h>
int main()
{
printf("size of void pointer in bytes : %d\n", sizeof(void*));
return 0;
}
我现在使用的是 Windows 10,因此,我安装了 gcc 编译器(MinGW for Windows)。现在我想为 32 位架构编译一次程序,然后为 64 位架构编译一次。为此,我在launch.json中的args参数中添加了m32,然后编译了程序。之后,我做了同样的事情,但针对 64 位架构(添加了m64 标志)。
在这两种情况下,程序的输出都是:
size of void pointer in bytes : 8
这让我感到奇怪。如果我在 Visual Studio 中编译我的程序(在那里你可以选择非常简单的架构,在“绿色箭头”旁边的下拉菜单中),那么字大小是 4 字节(32 位架构)和 8 字节(64 位架构) 应该是这样。
我也尝试将-march=i386 用于 32 位架构,但这对我没有帮助,指针仍然是 8 字节长。似乎传递的参数根本不影响架构。我是否遗漏了什么或出于我的目的使用了错误的论点?
我的launch.json 文件(带有-m32 标志):
{
"version": "0.2.0",
"configurations": [
{
"name": "gcc.exe - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": ["-m32"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "D:\\Compilers\\MinGW\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: gcc.exe build active file"
}
]
}
【问题讨论】:
标签: c gcc visual-studio-code