【发布时间】:2024-01-16 02:51:02
【问题描述】:
使用 VS 2019 创建 C 程序以在 Windows 子系统 Linux (Ubuntu) 中运行。
使用 gcc starfire.c 作为程序的最初目的进行编译是为了其他目的,但已经演变成这种混乱。
void main() {
printf("print this");
return;
}
我尝试过使用fflush(stdout) 和setbuf(stdout, NULL),但两者都不起作用。请帮忙?
编辑:我也尝试过使用\n,所以也不是这样。我也在使用#include <stdio.h>,但它仍然无法正常工作。
【问题讨论】:
-
试试这个程序:
#include <stdio.h>int main(void) { printf("print this\n"); } -
也最好澄清你的前两句话:你是否使用 WSL GCC 作为 VS2019 中的自定义构建工具?
-
如果你在 VS2019 中编辑,保存的文件很可能是 UTF-16 和 gcc 可能不喜欢的字节顺序标记。打开 VS Developers 命令提示符,切换到包含您的文件的目录并(在添加所需的头文件后)使用
gcc -Wall -Wextra -pedantic -O3 -o exenameyouwant nameoffile.c编译(在编译没有警告之前不要接受代码)然后运行 @987654330 @. -
@DavidC.Rankin 如果
.c是使用 UTF-16 生成的,那么 linuxgcc可能甚至无法编译它(语法错误)。由于 OP 已经尝试了printf的变体 [并且没有报告编译器错误],它似乎更像是一个运行时问题 -
所以VS2019其实和问题无关,你是在WSL shell下使用gcc来构建和运行的?
标签: c printf windows-subsystem-for-linux