argv全局使用指针是否安全?或者是否存在可能无效的情况?
即:这个代码安全吗?
char **largs;
void function_1()
{
printf("Argument 1: %s\r\n",largs[1]);
}
int main(int argc,char **argv)
{
largs = argv;
function_1();
return 1;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试编译此代码:
extern "C" void __declspec(dllexport) TEST(int num)
{
return;
}
Run Code Online (Sandbox Code Playgroud)
使用此命令行:
clang++ main.cpp -shared -o test.dll
Run Code Online (Sandbox Code Playgroud)
并且 clang 未能(无论如何)找到链接器
来自 clang 的详细输出:
"g++" -shared -v -c -m32 -o "C:\Users\Steve\AppData\Local\Temp\main-c7cf26.o" -x 汇编程序 "C:\Users\Steve\AppData\Local\Temp\ main-5132f2.s" clang++.exe: 错误:无法执行命令:程序不可执行 "g++" -shared -v -c -m32 -o "C:\Users\Steve\AppData\Local\Temp\TEST_CLANG-e037c5 .o" -x assembler "C:\Users\Steve\Documents\A\codeblox\TEST_CLANG\TEST_CLANG.s" clang++.exe:错误:无法执行命令:程序不可执行
所以看起来clang无法找到g++,但我的PATH设置为:
C:\Program Files (x86)\LLVM\bin>%PATH%
'"C:\Program Files (x86)\CodeBlocks\MinGW\bin"'
Run Code Online (Sandbox Code Playgroud)
所以我真的不明白问题就在这里!
在全局范围内定义变量时,将变量定义为静态有什么意义?反正不是全局变量"静态"吗?
即:这段代码有什么区别吗?:
int var1 = 0;
int main()
{
return var1;
}
static int var1 = 0;
int main()
{
return var1;
}
Run Code Online (Sandbox Code Playgroud)
我知道静态变量不能从任何其他翻译单元访问,但这并不是我真正关心的.