VS 代码扩展 "Code Runner" 不包含 <math.h> on Ubuntu Linux
VS Code extension "Code Runner" does not include <math.h> on Ubuntu Linux
当尝试编译包含 sqrt 或 pow 等数学函数的 C 代码时,终端显示此错误:
这是代码:
#include <stdio.h>
#include <math.h>
void main()
{
int x1, y1, x2, y2, dx, dy;
float c;
printf("\nUpisite koordinate tacke A(x1 i y1): ");
scanf("%d%d", &x1, &y1);
printf("\nUpisite koordinate tacke B(x2 i y2): ");
scanf("%d%d", &x2, &y2);
dx = x2 - x1;
dy = y2 - y1;
c = sqrt((dx*dx) + (dy*dy));
printf("\nDve tace su udaljene %2.f", c);
return;
}
我的同学建议这是 linux 的错误,我应该在终端末尾添加 -lm,但我正在尝试在 VSCode.[=16= 中完成这项工作]
VS Code 不会自动查找您在程序中使用的 header 文件并 link / 包含它 .
您可以通过 VS Code runner 运行的命令看到这一点,即
cd {folder where the program is }
g++ {program.cpp}
./{execute the binary}
您可以在编译阶段看到没有额外的库被 linked 或 header 包含在内。你必须自己做。
即为你的节目
gcc z14.c -o z14 -lm
我还建议学习像 CMake
这样的构建自动化工具,这将使编译任务和 linking 变得非常流畅。
要解决此问题,您可以编辑 Code-runner: Executor Map
文件,并在 "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt -lm && $dir$fileNameWithoutExt"
中添加“-lm”。
{
"workbench.colorTheme": "Default Dark+",
"code-runner.saveAllFilesBeforeRun": true,
"code-runner.saveFileBeforeRun": true,
"explorer.confirmDragAndDrop": false,
"code-runner.enableAppInsights": false,
"code-runner.showExecutionMessage": false,
"code-runner.clearPreviousOutput": true,
"code-runner.customCommand": "-lm",
"code-runner.defaultLanguage": "C",
"clangd.arguments": [
"-lm"
],
"clangd.checkUpdates": true,
"workbench.editor.enablePreview": false,
"code-runner.runInTerminal": true,
"code-runner.executorMap": {
"javascript": "node",
"php": "C:\php\php.exe",
"python": "python",
"perl": "perl",
"ruby": "C:\Ruby23-x64\bin\ruby.exe",
"go": "go run",
"html": "\"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe\"",
"java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
"c": "cd $dir && gcc $fileName -o $fileNameWithoutExt -lm && $dir$fileNameWithoutExt"
}
}
当尝试编译包含 sqrt 或 pow 等数学函数的 C 代码时,终端显示此错误:
这是代码:
#include <stdio.h>
#include <math.h>
void main()
{
int x1, y1, x2, y2, dx, dy;
float c;
printf("\nUpisite koordinate tacke A(x1 i y1): ");
scanf("%d%d", &x1, &y1);
printf("\nUpisite koordinate tacke B(x2 i y2): ");
scanf("%d%d", &x2, &y2);
dx = x2 - x1;
dy = y2 - y1;
c = sqrt((dx*dx) + (dy*dy));
printf("\nDve tace su udaljene %2.f", c);
return;
}
我的同学建议这是 linux 的错误,我应该在终端末尾添加 -lm,但我正在尝试在 VSCode.[=16= 中完成这项工作]
VS Code 不会自动查找您在程序中使用的 header 文件并 link / 包含它 .
您可以通过 VS Code runner 运行的命令看到这一点,即
cd {folder where the program is }
g++ {program.cpp}
./{execute the binary}
您可以在编译阶段看到没有额外的库被 linked 或 header 包含在内。你必须自己做。
即为你的节目
gcc z14.c -o z14 -lm
我还建议学习像 CMake
这样的构建自动化工具,这将使编译任务和 linking 变得非常流畅。
要解决此问题,您可以编辑 Code-runner: Executor Map
文件,并在 "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt -lm && $dir$fileNameWithoutExt"
中添加“-lm”。
{
"workbench.colorTheme": "Default Dark+",
"code-runner.saveAllFilesBeforeRun": true,
"code-runner.saveFileBeforeRun": true,
"explorer.confirmDragAndDrop": false,
"code-runner.enableAppInsights": false,
"code-runner.showExecutionMessage": false,
"code-runner.clearPreviousOutput": true,
"code-runner.customCommand": "-lm",
"code-runner.defaultLanguage": "C",
"clangd.arguments": [
"-lm"
],
"clangd.checkUpdates": true,
"workbench.editor.enablePreview": false,
"code-runner.runInTerminal": true,
"code-runner.executorMap": {
"javascript": "node",
"php": "C:\php\php.exe",
"python": "python",
"perl": "perl",
"ruby": "C:\Ruby23-x64\bin\ruby.exe",
"go": "go run",
"html": "\"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe\"",
"java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
"c": "cd $dir && gcc $fileName -o $fileNameWithoutExt -lm && $dir$fileNameWithoutExt"
}
}